从存储过程返回多个数据集?

时间:2019-12-03 00:20:07

标签: python sql sql-server pandas

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

例如

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

有可能吗?如果可以的话,如何将所有表格输出到大熊猫中?

1 个答案:

答案 0 :(得分:1)

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