首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

救证一句很简单但是不寻常的语句,该如何解决

2012-02-20 
救证一句很简单但是不寻常的语句如下in用法是正确的select*from数据表where字段名in( 值1 , 值2 , 值3 )假

救证一句很简单但是不寻常的语句
如下   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( ' '…… ' ') ')
这样的话,你那个存储过程又要改了。

热点排行