2013-08-16 29 views
-1
dECLARE @LS_SQL CHAR(100) 
dECLARE @SQL varCHAR(max) 
SET @LS_SQL=ltrim('''STOCK IN HAND'',''STORE'',''PRODUCT''') 

set @SQL='SELECT * FROM ITEM WHERE GROUPNAME IN(' + rtrim(@LS_SQL) + ')' 
PRINT @SQL 
execute @SQL 

結果在SQL Server

SELECT * FROM ITEM操作問題,即GROUPNAME IN( '股票 手', '商店', '產品')消息2812,級別16,狀態62 ,第9行可能 IN('STOCK IN HAND','STORE','PRODUCT')'找不到存儲過程'SELECT * FROM ITEM WHERE GROUPNAME IN'。

+0

你有沒有親自看過錯誤信息?它清楚地表明,存儲程序沒有找到。您正在EXECUTE方法上運行直接查詢,該方法需要存儲過程名稱。 –

回答

2

此命令

execute @SQL 

運行的過程。如果你婉運行動態SQL您必須使用以下命令:

exec (@SQL) 

你也可以使用

execute sp_sqlexec @SQL 
0

試試這個

dECLARE @LS_SQL CHAR(100) 
dECLARE @SQL varCHAR(max) 
SET @LS_SQL=ltrim('''STOCK IN HAND'',''STORE'',''PRODUCT''') 

set @SQL='SELECT * FROM ITEM WHERE GROUPNAME IN(' + rtrim(@LS_SQL) + ')' 
PRINT @SQL 
execute sp_sqlexec @SQL