为了账号安全,请及时绑定邮箱和手机立即绑定

如何将sp_Executesql结果转化为变量?

如何将sp_Executesql结果转化为变量?

临摹微笑 2019-07-25 14:14:21
如何将sp_Executesql结果转化为变量?我需要执行一段动态SQL,然后需要将结果存储到一个变量中。我知道我可以用sp_executesql但却找不到关于如何做到这一点的明确例子。
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

如果您有输出参数,您可以这样做。


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;

但如果您不修改,并且不能修改SP:


-- Assuming that your SP return 1 value

create table #temptable (ID int null)

insert into #temptable exec mysp 'Value1', 'Value2'

select * from #temptable

不漂亮,但很管用。




查看完整回答
反对 回复 2019-07-26
?
浮云间

TA贡献1829条经验 获得超4个赞

DECLARE @tab AS TABLE (col VARCHAR(10), colu2 varchar(10)) 
  INSERT into @tab EXECUTE  sp_executesql N'SELECT 1 as col1, 2 as col2 union all SELECT 1 as col1, 2 as col2 union all SELECT 1 as col1,
   2 as col2'

  SELECT * FROM @tab


 


查看完整回答
反对 回复 2019-07-26
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

DECLARE @vi INTDECLARE @vQuery NVARCHAR(1000)SET @vQuery = N'SELECT @vi= COUNT(*) FROM <TableName>'EXEC SP_EXECUTESQL 
        @Query  = @vQuery      , @Params = N'@vi INT OUTPUT'
      , @vi = @vi OUTPUTSELECT @vi



查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 276 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信