首页 > 解决方案 > 从存储过程返回多个数据集?

问题描述

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

例如

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()

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

标签: pythonsqlsql-serverpandas

解决方案


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


推荐阅读