救证一句很简单但是不寻常的语句
如下 in 用法是正确的
select * from 数据表 where 字段名 in( '值1 ', '值2 ', '值3 ')
假如
CREATE PROCEDURE [dbo].[Mater]
(
@Start nvarchar(100)
)
AS
select * from 数据表 where 字段名 in(@Start)
GO
而 '值1 ', '值2 ', '值3 ' 是作为传入值给@Start的参数,如何让select语句正常查询出正确的结果?
[解决办法]
CREATE PROCEDURE [dbo].[Mater]
(
@Start nvarchar(100)
)
AS
exec( 'select * from 数据表 where 字段名 in( '+@Start+ ') ')
GO
[解决办法]
--这种情况应该用动态sql
CREATE PROCEDURE [dbo].[Mater]
(
@Start nvarchar(100)
)
AS
exec( 'select * from 数据表 where 字段名 in( '+@Start+ ') ')
--这句话相当于select * from 数据表 where 字段名 in( '值1 ', '值2 ', '值3 ' )
GO
--但是,你那个sql已经是动态的了,如果再这样写的话就是
exec( 'exec( ' '…… ' ') ')
这样的话,你那个存储过程又要改了。