请教:如何解决以下数据传递中引号的问题
遇到一个问题,在存储过程中,需要在游标中使用以下语句,@name为存储过程的传入参数,为方便说明,本处直接赋值。
declare @name varchar(100)
set @name='''NAME1'',''NAME2'''
print @name
SELECT ID FROM TABLE1
WHERE NAME in(@name)
执行结果如下:'NAME1','NAME2',但SELECT查询却无法得出结果
分析下来:@name在SELECT中作为一个字段处理,并未作为两个选择内容,
在游标中不方便使用把上述select语句作为一个字符串来执行
请问是否有办法解决上面的问题?谢谢
问题点数:20、回复次数:4Top
1 楼pbsql(风云)回复于 2005-03-04 11:57:10 得分 0
declare @name varchar(100)
set @name='''NAME1'',''NAME2'''
print @name
exec('SELECT ID FROM TABLE1 WHERE NAME in('+@name+')')Top
2 楼zhangweitaylor(沧海浪子)回复于 2005-03-04 12:46:22 得分 0
可能不行,上面的select 语句用在游标的 DECLARE abc CURSOR FOR 语句中
无法使用exec的方法
Top
3 楼pbsql(风云)回复于 2005-03-04 12:51:41 得分 20
可以,把游标申明部分也放到exec中,可以在外面引用游标:
exec('DECLARE abc CURSOR FOR SELECT ID FROM TABLE1 WHERE NAME in('+@name+')...')
open abc
...Top
4 楼zhangweitaylor(沧海浪子)回复于 2005-03-04 16:44:00 得分 0
非常感谢,问题解决Top




