日期:2014-05-18  浏览次数:20647 次

同样的语句,为啥T-SQL语句能执行而存储过程不能执行?
我在查询分析器里输入如下语句一:
INSERT INTO A
SELECT groupID=3,B.userID FROM B WHERE userID in('user03','user04','user05')
可以添加三行新的数据。

我再建立一个存储过程:
CREATE PROCEDURE [Test_BuildAfterDelete] 
@GroupID BIGINT,
@UserIDs NVARCHAR(2000)
AS
INSERT INTO 
A
SELECT groupID=@GroupID,B.userID FROM B WHERE userID in(@UserIDs)
GO

在查询分析器里运行此存储过程,得到:“(所影响的行数为 0 行)”。
请问怎样才能在存储过程里实现语句一的效果?

------解决方案--------------------
SQL code
CREATE     PROCEDURE   [Test_BuildAfterDelete]   
@GroupID   BIGINT, 
@UserIDs   NVARCHAR(2000) 
AS 
exec('
INSERT   INTO   
A 
SELECT   groupID='+rtrim(@GroupID)+',B.userID   FROM   B   WHERE   userID   in('+@UserIDs+') 
')
GO