我正在使用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;
答案 0 :(得分:0)
@P_ID的数据类型是int / bigint。在这样的场景中投射相同的内容,你将得到输出
SET @sSQL= N'SELECT @L_TYPE_NAMEOUT= type FROM '+ @L_TNAME +' WHERE id ='+ CAST(@P_ID AS VARCHAR);