none
解決済みです pymssqlでストアドプロシージャのOUTPUTを受け取る方法について RRS feed

  • 質問

  • 自力で解決しました。ただ検索しただけで実行できるかどうか自身の経験をもってしても判然といない他人の書き込みを安易に拡散することはお控えください。

    以下の環境でPython2.7(32bit)でアプリケーションを作成しております。

    環境:Windows(64bit)
    DB:SQL Server 2014(64bit)

    SQL ServerにOUTPUTパラメータを持つストアドプロシージャを作りました。
    Pythonコード上からpymssqlライブラリを使用してこのプロシージャを実行し、
    OUTPUTの値を取得したいのですが、どこをどう調べても取得する方法が見つからず、大変困っております。
    OUTPUTのないプロシージャは普通に実行できるのですが、
    このOUTPUTパラメータを持つプロシージャの場合、以下のようなエラーが返されます。

    【エラー内容】
    'Must declare the scalar variable "@xxx".DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n')

    【呼び出しコード】
    con = pymssql.connect(省略)
    con.cursor().execute(プロシージャ名 @パラメータ1=abc,…,@xxx OUTPUT)

    上記の記述方法の場合、何らかの左辺受け取り変数の指定が必要ということは分かっているのですが、
    仮に何かの変数を左辺に用意してもエラー内容が変わる訳ではないため、
    上記コード例には記載を省略しています。

    なお、今は暫定的に2017版の環境で実行していますが、2014版のケースでご教授頂けますと幸いです。

    このようなケースにおいて、Pythonコード上からOUTPUTパラメータを持つプロシージャの正しい実行方法を教えてくださいますようお願いいたします。


    • 編集済み rise1974 2018年5月19日 10:04
    2018年5月18日 9:20

すべての返信