TSQL:确定存储过程返回的列数

标签 tsql stored-procedures dynamic temp-tables

这个问题可能以前有人问过,但我找不到满意的答案。

我需要将存储过程的结果插入到临时表中,例如:

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/

相关文章:

sql - 由 GROUP BY 查询产生的 SELECT 组数

sql - SELECT TOP N 有两个变量

sql-server - 从 SQL Server 的 XML 执行计划中提取数据

sql-server - 如何在 Exec 存储过程中使用Where子句

c# - 动态组织和调用 C# 方法

java - 如何在我的Web项目中看到web.xml被读取

sql - 将关联表展平为多值列?

c# - 在 c# 代码中使用 dapper 将输出参数传递给存储过程

postgresql - postgresql中的自定义自增字段(发票/订单号)

c# - C#\Dynamic\如果动态var为null(对象类型)或零(值类型),我是否可以 checkin 一条语句