代码之家  ›  专栏  ›  技术社区  ›  Ratha

我们可以从存储过程返回多个数据集吗?

  •  0
  • Ratha  · 技术社区  · 6 年前

    例如

    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个不同的temp表中获取数据集到python代码中。

    所有3个不同的temp表都是使用相同的表、相同的参数和一些操作构建的。因此,我不想创建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()
    

    有可能吗?如果是这样,如何将所有表输出到pandas中?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Dale K    6 年前

    是的,这应该管用。查看 nextset() https://www.python.org/dev/peps/pep-0249/