declare @prc_rnge_id as varchar(6)
set @prc_rnge_id ='1,2'
select * from dmnd_fcst_vol where prc_rnge_id in (@prc_rnge_id)
运行的时候抱“Syntax error converting the varchar value '1,2' to a column of data type int.”
改成:
select * from dmnd_fcst_vol where prc_rnge_id in 1,2)
就没有问题的,请问这个怎么解决?
解决方案 »
- 求一存储过程 判断是否存在,如果不存在,就添加一条记录,如果存在,就返回另外两个字段ID与数量的值
- 头大的问题!相信如下陈述,有关表连接问题
- sql server 2000 完整性约束问题? 请大虾帮忙给看看啊!
- 请教关于表中日期截取并减去现有日期的问题
- 急SQL连接失败。。。。。。。。。
- 若1點開始備份,那麼1:30插入的數據是否會備份到備份數據庫中?
- 求救,想把个出来的数据都放在一张表里,作为报表的数据
- 处于不同服务器上的数据库,必须保持同时修改数据库,共同完成,有什么方法?
- 为什么SQL SERVER 2000不能安装成功?
- 请问哪儿有好的chm格式或doc格式的参考资料,像大富翁论坛那样方便的查找参考啊?
- 有个参数传递的问题
- 怎樣匯總小計,合計值(求教高手)。
set @prc_rnge_id ='1,2'
exec ('select * from dmnd_fcst_vol where prc_rnge_id in (' + @prc_rnge_id + ')')
动态sql语句基本语法
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sql nvarchar(4000)
set @sql='select count(*) from tableName'
exec(@sql)
--如何将exec执行结果放入变量中? declare @num int, @sql nvarchar(4000)
set @sql='select @a=count(*) from tableName '
exec sp_executesql @sql,N'@a int output',@num output
select @num
set @prc_rnge_id ='1,2'
set @sql='select * from dmnd_fcst_vol where prc_rnge_id in (' + @prc_rnge_id + ')'
exec (@sql)
exec 后面的字符串必须用括号括起来才行,刚用动态sql时,经常会忽略这一点.