存储过程如果存在动态表

时间:2015-01-13 04:25:42

标签: sql-server stored-procedures

我在这里遇到问题,我在stackoverflow中搜索但仍未找到最佳方式

我有一个像这样的存储过程(SP)

  

DECLARE @table NVARCHAR(max),@ SQLQuery NVARCHAR(max)   SET @table = @meta +' _prize4winner'

     

SET @SQLQuery ='如果存在(从[dbo]中选择*。' + @table +'其中idCampaignLog =''' +转换(nvarchar,@ ID)+''')exec InsertC2CWinner'''' + convert(nvarchar,@ meta)+''',''' + convert(nvarchar,@ ID)+'&#39 ;',null否则选择''你输了'作为winStatus'

     

执行SP_EXECUTESQL @SQLQuery

如果我想要输出,如果存在,那么

需要帮助设置输出的方式和位置'你赢了'别的'你失去了' THX

1 个答案:

答案 0 :(得分:0)

一般语法是这样的

DECLARE @retval int   
DECLARE @sSQL nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);

DECLARE @tablename nvarchar(50)  
SELECT @tablename = N'products'  

SELECT @sSQL = N'SELECT @retvalOUT = MAX(ID) FROM ' + @tablename;  
SET @ParmDefinition = N'@retvalOUT int OUTPUT';

EXEC sp_executesql @sSQL, @ParmDefinition, @retvalOUT=@retval OUTPUT;

SELECT @retval;