将动态执行的查询分配给变量

时间:2015-06-24 09:49:57

标签: sql

我正在使用sp_executesql在我的sproc中运行一个动态查询并分配给变量。但是当我执行时,我没有得到任何结果。有人可以帮助我查询我的错误。

@L_TNAME & @P_ID will get the values during run time.

DECLARE @sSQL VARCHAR(1000);
DECLARE @ParmDefinition nvarchar(500);

 SET @sSQL= N'SELECT @L_TYPE_NAMEOUT= type FROM '+ @L_TNAME +'  WHERE id ='+ @P_ID;
 SET @ParmDefinition = N'@L_TYPE_NAMEOUT VARCHAR(1000) OUTPUT';

 EXEC sp_executesql @sSQL, @ParmDefinition, @L_TYPE_NAMEOUT=@L_TYPE_NAME OUTPUT;
 SELECT @L_TYPE_NAME;

1 个答案:

答案 0 :(得分:0)

@P_ID的数据类型是int / bigint。在这样的场景中投射相同的内容,你将得到输出

SET @sSQL= N'SELECT @L_TYPE_NAMEOUT= type FROM '+ @L_TNAME +'  WHERE id ='+ CAST(@P_ID AS VARCHAR);