这个问题可能以前有人问过,但我找不到满意的答案。
我需要将存储过程的结果插入到临时表中,例如:
INSERT INTO #TEMP EXEC MY_SP
我事先不知道 SP 将返回多少列,因此我需要准备我的 #TEMP 表(通过动态 ALTER .. ADD 命令)来添加列以匹配 SP 结果集。
假设 - SP 不接受任何参数,并且列数始终相同。但是我如何确定 SP 之外的纯 TSQL 中的数字,以便我可以将其存储到变量中?
最佳答案
很难,特别是如果其他人拒绝您运行所需的权限,例如开放行集。
您是否考虑过对 SP 进行解压/编写脚本并将其内容直接添加到您的 T-SQL 中?通过这种方式,您可以根据需要对其进行修改和调整。
否则,如果您能解释一下有关 SP 的更多信息:
- SP 做什么?
- 它输出什么样的信息? 1-N 列,- 多少行?
- 是慢还是快? (我们是否可以使用暴力 [try-catch] 方法)?
- 它如何确定要输出的列以及更改的频率?
- 您能以任何方式预先确定列吗? (这样您就可以使用 INSERT #temp EXEC sp_getData 语法)。
祝你好运!
关于TSQL:确定存储过程返回的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11618634/