在存储过程中,我想使用下面的T-SQL语句:
select 姓名,职务 from 人事表 where 自动编号 in (1,3,5,7) ORDER by 姓名
只是in谓句中的1,3,5,7是动态从变量参数中取得的,我的存储过程代码如下:
Altor Procedore RenList
@IDlist Varchar(50)
As
select 姓名,职务 from 人事表 where 自动编号 in ('+ @IDlist +') ORDER by 姓名
return
在双击存储过程执行时,没有跳出参数输入对话框,而是出现下面的错误提示:
syntax error comerting the varchar value '+ @IDlist +' to a column of data type int
大致意思应该是数据类型不符。我写了一个存储过程,测试了一下这条SELECT语句:
Altor Procedore RenList
@IDlist Varchar(50)
As
declare @SQLstr varchar(100)
set @SQLstr='select 姓名,职务 from 人事表 where 自动编号 in ('+ @IDlist +') ORDER by 姓名'
insert into abc(a) values(@SQLstr)
return
执行存储过程,输入参数:8,15,25,50
然后打开表abc查看插入的记录,结果为:
select 姓名,职务 from 人事表 where 自动编号 in (8,15,25,50) ORDER by 姓名
这条select语句看不出有什么问题,为什么用我的写法在存储过程中无法执行呢?
请高手帮忙看看,谢谢!
[此贴子已经被作者于2005-10-4 21:09:53编辑过]
|