【问题标题】:Return multiple datasets from a stored procedure?从存储过程返回多个数据集?
【发布时间】:2020-03-27 15:11:25
【问题描述】:

是否可以从存储过程中返回多个数据集?

例如

CREATE PROCEDURE [dbo].[usp_vvvv] (....)
.....
    SELECT *
    FROM #_temp_client_details

    SELECT *
    FROM #_temp_address_details

    DROP TABLE #_temp_client_details
    DROP TABLE #_temp_address_details
    ....
END TRY
BEGIN CATCH
    ..
END CATCH
END

在我的场景中,我需要从 3 个不同的临时表中获取数据集到我的 python 代码中。

所有 3 个不同的临时表都是使用相同的表、相同的参数和一些操作构建的。所以,我不想创建 3 个单独的存储过程(因为所有 3 个存储过程都将使用 90% 相同的 SQL 逻辑)。

我目前从以下存储过程之一获取输出:

 import pandas as pd
  def execute():
    query='exec [zzz].[dbo].[sp_zzz]?, ?, ?, ?'
            df = pd.read_sql(query, cnxn, params=[astart, aend, lstart,
                                            lend])

            writer = pd.ExcelWriter('output.xlsx')
            df.to_excel(writer, index=False, sheet_name='client') 
            writer.save()

有可能吗?如果是这样,我怎样才能将所有表输出到熊猫中?

【问题讨论】:

  • 这取决于您使用的数据库。看起来您使用的是 Microsoft SQL Server,对吗?
  • @gnud 是的..我正在使用 MsSQL
  • @gnud 任何示例我如何使用 python/pandas+ mssql stroedproc 实现?

标签: python sql sql-server pandas


【解决方案1】:

是的,这应该可以。在此处查看 Python 文档中 nextset() 函数的使用:https://www.python.org/dev/peps/pep-0249/

【讨论】:

  • 我正在使用 pandas 从 sql 存储过程中读取数据。 panadas read_sql 中有选项吗?
  • 请确保您的答案是独立的,即不依赖于将来可能中断的链接。
  • 嗨,Ratha,我不知道。顺便说一句,您是否刚刚尝试从同一连接再次读取?
  • 嗨 Dale,Python 文档中对 nextset() 函数的引用本身就足够了吗? (即有或没有链接)
  • @GregLow 因为它适合发表评论,但不足以回答。答案将包含一些代码来演示该函数如何 解决 OPs 问题。
猜你喜欢
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 2015-05-29
  • 2011-11-06
相关资源
最近更新 更多