sql >> データベース >  >> RDS >> Oracle

cx_oracleのストアドプロシージャ出力カーソル変数を返します

    プロシージャの呼び出しは、パラメータとしてシーケンスを受け取り、シーケンスも返します。

    l_test = self.__cursor.callproc("prc_get_some_data",[l_cur])
    print(type(l_test))
    #>>> <class 'list'>
    

    したがって、返されたカーソルにインデックスでアクセスできます:

    ret_cursor = self.__cursor.callproc("prc_get_some_data",[l_cur])[0]
    

    または

    l_test = self.__cursor.callproc("prc_get_some_data",[l_cur])
    ret_cursor = l_test[0]
    

    次に、forループを使用して結果を出力できます

    for line in ret_cursor:
        print line
    

    またはprint ret_cursor.fetchall()を使用します 、またはpprintを使用 必要に応じてツール。

    ドキュメント リンクすると、戻り値はl_queryに直接解凍されます。 およびl_emp

    l_query, l_emp = self.__cursor.callproc("PKG_HR.FIND_EMPLOYEES", [p_query, l_cur])
    

    ちなみに、メインカーソルと同じメソッドret_cursor.close()を使用して、返されたカーソルを最後に閉じる必要がある場合があります。 。そうしないと、接続を閉じることができないという例外がスローされる可能性があります。 。




    1. Pythonを使用してMySQLに接続する方法

    2. それらの間の距離で2つのポイントを追加するにはどうすればよいですか(SRID =32636)?

    3. SQLでDISTINCTを使用する方法

    4. WindowsでのOracleSQLDeveloper入門