私が見つけることができるPL/SQLの使用例はすべて、次のようになります(この例はウィキペディアから抜粋したものです)。
FOR RecordIndex IN (SELECT person_code FROM people_table)
LOOP
DBMS_OUTPUT.PUT_LINE(RecordIndex.person_code);
END LOOP;
言い換えれば、それらすべてに共通することが1つあります。実際にデータをどこかに出力するときは、データを貼り付けDBMS_OUTPUT
ます。これは、アプリケーションがデータを処理するのに非常に役に立たない場所のようです。
PL / SQL機能を使用してOracleデータベースからデータを取得したい場合、このデータがプレーンSQLクエリの結果であるかのようにするにはどうすればよいですか。たとえば、DELETE ... RETURNING ... INTO
SQLステートメントによって削除された行を、 SELECT ... FROM ...
?の結果を処理するのと同じ方法で処理したい場合です。
データベースのスキーマを変更したり、ストアドプロシージャを作成したりしたくありません。やりたいだけですcursor.execute("begin; ... something; end"); results = cursor.fetchall()
。
特に、そのAPIはデータベース実装間で移植できないため、変数を作成したくありません。cursor.var()
(もちろん、SQLも移植可能ではありませんが、さまざまなデータベースバックエンド用にカスタムSQL文字列を生成する必要があることは一般的に受け入れられています。)