昨天一个网友问我这样一个问题:
declare @si_names nvarchar(200),@txt nvarchar(4000),@sql as nvarchar(4000)
set @si_names='(''0'',''fcly'',''啦啦啦'',''我爱Home'')'
insert into ShopEmail(si_id,se_friend,se_title,se_content,se_time,se_state,se_isend,se_sendel,se_isdraft)
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0' from ShopInfo where si_name in @si_names
却是报错误
insert into ShopEmail(si_id,se_friend,se_title,se_content,se_time,se_state,se_isend,se_sendel,se_isdraft)
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0' from ShopInfo where si_name in ('0','fcly','啦啦啦','我爱Home')
却是OK的
我想到以前我是用动态T-SQL处理的
set @sql='select ''3'',id,''测试一下邮箱功能'',''添加内容:测试一下邮箱功能,请好好配合哦!'',Getdate(),''0'',''1'',''0'',''0'' from ShopInfo where si_name in'+ @si_names
EXEC(@sql)
没有问题
但是我一直没搞清楚原因 你能告诉我么?
---------------------我发帖后----一网友回答
create table ShopEmail(si_id varchar(10),se_friend varchar(10),se_title nvarchar(100),se_content nvarchar(100),
se_time datetime,se_state varchar(10),se_isend varchar(10),se_sendel varchar(10),se_isdraft varchar(10))
create table ShopInfo(id varchar(10),si_id varchar(10),se_friend varchar(10),se_title nvarchar(100),se_content nvarchar(100),
se_time datetime,se_state varchar(10),se_isend varchar(10),se_sendel varchar(10),se_isdraft varchar(10),si_name nvarchar(10))
go
declare @si_names nvarchar(200),@txt nvarchar(4000),@sql as nvarchar(4000)
set @si_names='(''0'',''fcly'',''啦啦啦'',''我爱Home'')'
--可以将字串 ('0','fcly','啦啦啦','我爱Home') 赋给@si_names
/*
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0'
from ShopInfo where si_name in @si_names
*/
--有语法错误,是因为@si_names 只是一个字符串,而不是一个值列表 in(valueslist).
--这句:
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0'
from ShopInfo where si_name in ('0','fcly','啦啦啦','我爱Home')
--in 后面就是一个值列表
set @sql='select ''3'',id,''测试一下邮箱功能'',''添加内容:测试一下邮箱功能,请好好配合哦!'',Getdate(),''0'',''1'',''0'',''0'' from ShopInfo where si_name in'+ @si_names
--这句执行后,@sql为
select '3',id,'测试一下邮箱功能','添加内容:测试一下邮箱功能,请好好配合哦!',Getdate(),'0','1','0','0' from ShopInfo where si_name in('0','fcly','啦啦啦','我爱Home')
--用 exec(@sql)运行当然没问题了.
go
drop table shopemail,shopinfo
分享到:
相关推荐
自己总结的 关于sqlserver存储过程与多值参数的解决办法。
本文实例讲述了ThinkPHP有变量的where条件分页的实现方法。分享给大家供大家参考。 主要功能代码如下: 复制代码 代码如下: $Form= D(‘Announcement’); import(“ORG.Util.Page”); $count = $Form->count(); //...
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END; ... 3.IF 判断 IF V_TEST=1 THEN BEGIN do something END; END IF; 4.while 循环 WHILE V_...
主要介绍了浅谈pymysql查询语句中带有in时传递参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
碰到了一个一个非常慢的SQL server语句,发现是变量查询时很慢 SQL语句: DECLARE @SN VARCHAR(12) SET @SN = '30F335CD0045' SELECT [Mac2] FROM SF_Cp_Detail WHERE [Mac2] = @SN 确认2.查看索引是:唯一非聚集...
在SQL存储过程中给条件变量加上单引号,不加语句会出问题,以下是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) set @where= '(DATEDIFF(day,'''+CONVERT(varchar...
IF boolean_expr(条件) THEN /* 加条件语句,当满足条件时候退出循环*/ EXIT; /* EXIT WHEN boolean_expr */ END IF; END LOOP; 2) WHILE 循环 WHILE boolean_expr(条件) LOOP /* boolean_expr 循环条件*/...
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END; ... 3.1.3 IF 判断 IF V_TEST=1 THEN BEGIN do something END; END IF; 3.1.4 while ...
// somewhere in the controllerfunction index ( req , res ) { var locals = { title : 'Home' } ; res . render ( 'home' , locals ) ;} home.ejs (或任何模板语言)在渲染时会有局部变量 {
本文实例讲述了thinkPHP控制器变量在模板中的显示方法。分享给大家供大家参考,具体... $depart1 = M("Depart") -> where("status=1 and fid=0") -> order("id asc") -> select(); $this -> assign("depart1", $dep
1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.SELECT INTO STATEMENT 将select查询的结果存入到变量中...
大概在Python2.7.xx以前,安装Python时环境变量是需要自己设的,所以自己做了一个批处理文件.bat来设置环境变量Path,通过WMI命令wmic来实现。 ::检查path中有没有相关路径 echo %path%|findstr /i c:\python27\...
Where 条件表达式格式为: $map['字段名'] = array('表达式', '操作条件'); 其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义: ThinkPHP运算符 与 SQL运算符 ...
但是这样就没有问题: 复制代码 DECLARE @TableName NVARCHAR(50),@Sql NVARCHAR(MAX),@Score INT DECLARE @Sql2 NVARCHAR(MAX) SET @TableName = 't_Student'; SET @Score = 90; SET @sql = 'SELECT * FROM '+...
1.掌握相关。 2.体会各种查询的异同及相互之间的转换,体会各种查询的执行过程,为综合应用...where sno not in(select sno from Select_Course as SC where cno in( select cno from Course where SC.cno=@Cno ));
1. 导入数据(infile input、import) 第一部分:原始数据分类 1.1标准数据和非标准数据 1.2 数值数据和字符数据 第二部分:data步使用infile+input读入原始数据 2.1 input简单方式 2.2 input列方式(columns)读入 ...
在数学中的最优化问题中,拉格朗日乘数法方法可以将一个有n个变量与k个约束条件的最优化问题转换为一个解有n + k个变量的方程组的解的问题。本文以可视化的形式讲解拉格朗日乘子法,注意,虽然是英语,但是都很简单...
Dim IPA '定义对象和变量 Set objWMI1 = CreateObject("WbemScripting.SWbemLocator") '建立1个WBEM对象的引用指针 Set LOC1 = objWMI1.ConnectServer(".", "root\cimv2") '连接WMI Set X = LOC1.ExecQuery...
LINQ的语义: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] LINQ的查询返回值的类型是临时变量的类型,可能是一个对象也可能是一个集合。...
$ 取环境变量的值。 | 管道。把前一命令的输出作为后一命令的输入,把几个命令连接起来。 |经常跟tee连用,tee 把内容保存到文档并显示出来。 三、通用后接命令符 -a 所有(all)。 -e 所有(every),比a更...