当前位置:  开发笔记 > 数据库 > 正文

TSQL:如何使用生成的sql命令字符串填充变量而不使用游标

如何解决《TSQL:如何使用生成的sql命令字符串填充变量而不使用游标》经验,为你挑选了1个好方法。

我试图在存储过程中获取生成的sql的值.
执行此操作

   DECLARE @sSQL varchar(5000), @retval int
   DECLARE @tablename varchar(50)

   SELECT @tablename = 'products'

   SELECT @sSQL = 'SELECT @retval = MAX(ID)'
   SELECT @sSQL = @sSQL + ' FROM ' + @tablename
   EXEC (@sSQL) 

   SELECT @retval

我明白了

   Must declare the variable '@retval'.

如何在不使用游标的情况下获取值(我正试图避免)?



1> Mitch Wheat..:

您将需要使用sp_executesql:

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;

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有