問題タブ [sys-refcursor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - 匿名PL/SQLブロックでアウトカーソルパラメータを使用してOracleプロシージャを実行する方法は?
Oracle XE の HR データベースを使用して PL/SQL を学習しています。
次のストアド プロシージャを作成しました。
SQL Developer GUIインターフェイスで実行して結果を確認する方法を知っています。また、 Justin Caveからこことここでそれを実行し、SQL*Plus スタイルの結果を次のように確認する方法も学びました。
匿名の PL/SQL ブロックでストアド プロシージャを実行し、グリッドで結果を確認したいのですが、うまくいきませんでした。
Justin Cave が提案したように、以下は問題なく実行されますが、結果は表示されません。
以下は失敗します。
エラーメッセージには次のように記載されています。
PLS-00320: この式の型の宣言が不完全であるか、形式が正しくありません
わかりません。私は他のいくつかの匿名PL/SQLブロックでそれを行ってきましたが、完全に機能しました。ここの行の何が問題になっていますか? わかりません。
java - Java JDBC - Oracle11g Sys Ref Cursor 対 pl/sql コレクション
Java アプリケーション (JDBC を使用) から Oracle 11g データベースから 3000 ~ 5000 レコードを取得するための推奨事項について専門家に尋ねたいと思います。私たちの標準は、常にストアド プロシージャを呼び出すことです。
調査を行ったところ、JDBC fetch count プロパティに基づいて、ref カーソルがデータベースに対して複数のラウンド トリップを行うことがわかりました。(参照カーソルを処理するときに、オラクルとJVMのメモリにデータがどのように格納されるかというエンドツーエンドのフローについて、誰かがもっと光を当てることができますか)
データがOracle dbから呼び出し元(Java)にワンショットで送信されるため(一括収集を使用)、コレクションの方が効率的であると考えていました。このアプローチにより、Java から Oracle サーバーへの複数のネットワーク呼び出しを回避できます。これは本当の仮定ですか?
あなたの助けに感謝!
arrays - list_agg を使用して sys_refcursor から JSON 文字列を作成する
ストアド プロシージャで list_agg を使用して sys_refcusrosr から json を構築する方法を教えてもらえますか?そうすると、「string concatenation is too long」というエラー結果が表示されますか?
従業員の作成または置換( p_employee_num IN NUMBER, p_next_level IN NUMBER, p_record_out OUT SYS_REFCURSOR)
as BEGIN OPEN p_record_out for WITH employee_details as ( Select '{' ||'"EMPLOYEE PARENT NAME"' || employee_parent_level || '",' || '"EMPLOYEE CHILD Name"' || employee_child_level || '} ,' json from employee start with employee_child_level = p_employee_num 前の employee_child_level = employee_parent_level および level < (1 +p_next_level) で接続 レベル順) select '{"company" : [' ||( select listagg( json, ',') グループ内 (1 順) employee_details から) ||']}' デュアルから;
最終従業員;
oracle - ORA-01001 SQL ステートメントで使用される関数に無効なカーソル エラーがあります
結果を取得しようとすると、関数 pipe_cursor で ORA-01001 Invalid Cursor エラーが発生し、その理由がわかりません。
タイプ T_TBL:
テスト パッケージ:
テスト スクリプト:
ノート:
関数を次のように呼び出すと
できます
Oracle Database 11g Release 11.2.0.3.0 - 64bit でこれを実行しようとしています
.net - C# で Dapper を使用して、refcursor を out パラメータとして Oracle ストアド プロシージャを呼び出す問題。ただし、戻り値として refcursor は機能します。
この oracle ストアド プロシージャ パッケージがあるとします。
そして、このパッケージ本体:
Dapper を使用していずれかの関数を呼び出そうとしています。StackOverflow を検索した後、この投稿で見つけた Dapper.SqlMapper.IDynamicParameters を実装する OracleDynamicParameters クラスを作成しました: https://gist.github.com/vijaysg/3096151
TestReturnRefCursor ストアド関数の呼び出しは、次のコードで正常に機能します。
ただし、次のコードで TestingRefCursorsAsOutParam ストアド プロシージャを呼び出そうとすると、次のようになります。
Oracle.ManagedDataAccess.dll から OracleException を詳細とともに取得します。
別のstackoverflow投稿を検索した後、値をDBNull.Valueに具体的に設定しない限り、パラメーターがnullの場合にパラメーターがバインドされないことがあることがわかりました。そのため、パラメーターの追加行を次のように変更してみました。
しかし、これは役に立ちませんでした。
通常の C# oracle コードを使用して、このストアド プロシージャを問題なく呼び出すことができます。
ここに欠けているものはありますか、それとも Dapper が正しく機能していませんか?
plsql - plsql で参照カーソルを比較する
当社の既存の手順は、パフォーマンスを向上させるために変更されました。このコンテキストでは、データの不一致がないことを確認する必要があります。これらの異なるプロシージャからの 2 つの refcursor をどのように比較できますか?
oracle - 別のプロシージャ内で out パラメータとして sys_refcursor を使用して SP を呼び出す
SPを持っています
本体の残りの部分は貼り付けませんでした。上記の手順は、それ自体で正常に機能します (もちろん本体で)
ここで、別のストアド プロシージャから呼び出したいと思い、refcursor をトラバースしたいと考えています。
私がやっていることは、コンパイル時にan_last_cur SYS_REFCURSOR;
ALTERNATE_NAME_LOOKUP プロシージャを宣言して呼び出すことです。ALTERNATE_NAME_LOOKUP(p_req.LASTNAMEEXP,c_LAST, an_last_cur);
しかし、次のブロックを追加すると-
コンパイルエラーが発生します-
私は何を間違っていますか?
oracle - ORACLE: 動的クエリを使用したカーソル - カーソル フィールドに「無効な識別子」というエラーがスローされる
動的SQLを使用する必要がある場所を実装するロジックがあります(列名とWHERE句はその場で決定されます)。したがって、ここで私のカーソル(emp_ref_cursor
)には動的SQLがあり、3つのカーソルフィールド(emp_id,emp_name,dept
)があります。
句でこれらのカーソル フィールドを使用しWHERE
て、ループ内で別の動的 SQL を実行しようとしています。Oracle はカーソル フィールドを識別できず、「ORA-00904:"EMP_REC"."EMP_ID": invalid identifier"
ただしemp_rec.emp_id
、DBMS_OUTPUT
.
注: コードの品質についてコメントしないでください。これは実際のコードではありません。これは単に問題を説明するために使用されます。コンプライアンス関連のものがあるため、実際のコードを投稿できません。