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

SQL Server 取得exec执行结果中的值怎么取?

SQL Server 取得exec执行结果中的值怎么取?

湖上湖 2019-04-07 11:19:00
declare@sqlvarchar(2000),@tsqlnvarchar(max),@splitvarchar(100)set@sql='A,B,C,D,E'--保存的字符set@split=','--分隔符select@tsql='select'''+replace(@sql,@split,'''ASNewunionallselect''')+''''exec(@tsql)createtableT(idchar(6),wordsvarchar(100))insertintoTvalues('1','A,B,C,D,E')--droptableTdeclare@tsqlvarchar(100),@sentencevarchar(100)exec('selecttop1wordsfromTwhereid=''1''')--此处本尝试获得exec执行的结果(字符串),以用于下面的Replace函数第一个参数,但未找到方法;select@tsql='select'''+replace('A,B,C,D,E',',','''ASNewunionallselect''')+''''exec(@tsql)
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

这里可以不用EXEC,换另外一种思路。
DECLARE@wordVARCHAR(100);
SELECT@word=(SELECTTOP1words
FROMT
WHEREid=1);
这样就可以获取到字符串了。
                            
查看完整回答
反对 回复 2019-04-07
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

declare@sqlvarchar(2000),@tsqlnvarchar(max),@splitvarchar(100)
set@sql='A,B,C,D,E'--保存的字符
set@split=','--分隔符
select@tsql='select'''+replace(@sql,@split,'''ASNewunionallselect''')+''''
declare@ttable([new]nvarchar(255))
insertinto@texec(@tsql)
select*from@t
但正如上面所说的,这里没必要用exec,直接取值就可以
declare@ttable(idchar(6),wordsvarchar(100))
insertinto@tvalues('1','A,B,C,D,E')
insertinto@tvalues('2','A,B,C,D,E,F')
insertinto@tvalues('3','A,B,C,D,E,F,G')
declare@wvarchar(100)
selecttop1@w=wordsfrom@t
declare@tsqlvarchar(2000)
select@tsql='select'''+replace(@w,',','''ASNewunionallselect''')+''''
exec(@tsql)
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 402 浏览
慕课专栏
更多

添加回答

举报

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