sql - 从存储过程 Transact-SQL SQL Server 中访问结果集

标签 sql sql-server tsql

我正在使用 SQL Server 2005,我想知道如何从 transact-sql 中访问不同的结果集。以下存储过程返回两个结果集,例如,如何从另一个存储过程访问它们?

CREATE PROCEDURE getOrder (@orderId as numeric) AS
BEGIN   
    select order_address, order_number from order_table where order_id = @orderId
    select item, number_of_items, cost from order_line where order_id = @orderId
END

我需要能够单独迭代两个结果集。

编辑:只是为了澄清问题,我想测试存储过程。我有一组从 VB.NET 客户端使用的存储过程,它返回多个结果集。这些不会更改为表值函数,事实上我根本无法更改程序。改变程序不是一个选择。

过程返回的结果集的数据类型或列数不同。

最佳答案

简短的回答是:你做不到。

从 T-SQL 中,如果不按照其他人的建议更改存储过程,就无法访​​问嵌套存储过程调用的多个结果。

为了完整起见,如果过程返回单个结果,您可以使用以下语法将其插入到临时表或表变量中:

INSERT INTO #Table (...columns...)
EXEC MySproc ...parameters...

您可以对返回多个结果的过程使用相同的语法,但它只会处理第一个结果,其余结果将被丢弃。

关于sql - 从存储过程 Transact-SQL SQL Server 中访问结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940/

相关文章:

按照 IN 条件传递的顺序获取 MySQL 记录

sql - PostgreSQL 10 - 返回部分列(TEXT)值与匹配的 ILIKE 模式及其 N 个相邻单词

sql-server - 如何配置 SQL Server 以允许通过 IIS 访问

sql - Sql 宽度的进度 ODBC 问题(DBTool?)

sql - Azure SQL Server "clr strict security"可以更改吗

SQL 查询以显示已购买某些特定产品的客户姓名

sql-server - SQL Case语句 VS Union All 性能

c# - 包含/加入问题的 Entity Framework

sql-server - 用文本更新 varchar 列的最快方法

python - 将 sql 选择解压缩到 pandas 数据框中