存储过程 in用法
- SQL code
drop PROCEDURE [Proc_test]GOcreate PROCEDURE [Proc_test]@name varchar(20)ASBEGIN select * from tb1 where name in(@name)END GO
exec PROC_test '''Z001'',Z002'''
想这样执行,但是一直找不到结果,应该是参数的问题,就是不知如何写引号才能得到值
[解决办法]
- SQL code
create PROCEDURE [Proc_test]@name varchar(20)ASBEGIN exec('select * from tb1 where name in('+@name+')')END GO
[解决办法]
select * from tb1 where charindex(','+name+',' , ','+@name+',') > 0
[解决办法]
- SQL code
drop PROCEDURE [Proc_test]GOcreate PROCEDURE [Proc_test]@name varchar(20)ASBEGIN exec('select * from tb1 where name in('+@name+')')END GO
[解决办法]
- SQL code
drop PROCEDURE [Proc_test]GOcreate PROCEDURE [Proc_test]@name varchar(20)ASBEGINdeclare @sql nvarchar(1000)set @sql='select * from tb1 where name in('+@name+')'exec(@sql)END GOexec PROC_test '''Z001'',''Z002'''
[解决办法]
drop PROCEDURE [Proc_test]
GO
create PROCEDURE [Proc_test]
@name varchar(20)
AS
BEGIN
select * from tb1 where charindex(','+name+',' , ','+@name+',') > 0
END
GO
exec PROC_test 'Z001,Z002'
[解决办法]
给lz提个醒。。
在MSSQL中。单引号可以用作转移字符。。
比如:
print ''''
输出'
[解决办法]
动态sql,效率比较差吧
[解决办法]
动态SQL 不错的选择