問題タブ [ref-cursor]
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 - RefCursorを開くとOracle ORA:01031が発生する
次の手順を実行すると、エラー ORA : 01031 がスローされます。
手順の最後にあるこのコードをよく見ると
これは
ユニオンをすべて削除すると正常に動作しますが、私の場合はユニオンをすべて使用する必要があり、問題が発生しています(事前に感謝します)
plsql - 別の PLSQL 関数から ref_cursor を呼び出す
A、B、C の 3 つの PLSQL 関数があります。
アイデアは次のとおりです。C が B を呼び出し、B が A を呼び出します。
関数 A は、B によって呼び出されると、数値をステータス インジケーターとして返し、参照カーソルを表形式の結果とともに返します。例 function_A (varchar2 の A1、sys_refcursor の A2) は番号を返します。
関数 B は、A から結果を受け取ると、結果を C に渡す前に、やはり参照カーソルの形式で再フォーマットする必要があります。
A は既存の機能であり、修正することはできませんが、B と C は完全に新しい機能になります。
問題は、A から ref カーソルを取得するにはどうすればよいかということです。関数によって返された数値 (つまり、ステータス インジケーター) を取得できましたが、A から参照カーソルの結果を取得するのに問題があります。
B から A を呼び出している場合、A の ref カーソルが自動的に開かれていると想定できますか?
A の参照カーソルから結果を取得するための論理的な手順は何ですか? たとえば、結果をオブジェクト型にフェッチできますか?
P/S。私はプログラミング経験が非常に限られており、PLSQL を始めて数か月しか経っていません。
どんなヒントでも大歓迎です。
java - 正しくない序数バインディングと名前付きバインディングを組み合わせることはできません例外
名前付きクエリを使用して定義されたプロシージャを呼び出す春のデータ リポジトリがあります。ストアド プロシージャには 2 つのパラメータがあり、最初のパラメータは ref_cursor で、2 番目のパラメータは in パラメータです。これはsp署名です:
また、これはエンティティの名前付きクエリ定義です。
これは、名前付きクエリを呼び出すリポジトリです。
以下を呼び出すとgetProc1
、例外が発生します:
java - JPA 2.1 を介して ref_cursor を使用して Oracle ストアド プロシージャを呼び出すと、無効な列名の例外が発生する
JPA を使用して Oracle ストアド プロシージャを実行しようとしています。以下に示すように、クエリを作成し、query.getResultList() を介してストアド プロシージャを呼び出すと、結果を取得できます。
ただし、これはあまりエレガントではありません。
以下のコードのようにエンティティ マッピングを使用しようとすると、errpr が発生します。
org.springframework.orm.jpa.JpaSystemException: CallableStatement から結果を抽出中にエラーが発生しました"
と
java.sql.SQLException: 列名が無効です
プロシージャが呼び出された後、エンティティにマップしようとしているとき
この問題をいくつかの方法で解決しようとしました。エンティティ カスタム マッピング @SqlResultSetMapping を使用query.getResultList
し、 をList<MyEntity>
. ただし、例外は常に同じです。
JPA がストアド プロシージャから列情報を取得できないようです。
列名を再確認したところ、ストアド プロシージャによって取得された列と一致していましたが、データベースにそのような列を持つ実際のテーブルがないことを追加する必要があります。
ポムから…
マッピングを機能させるには、ストアド プロシージャを特定の方法で記述する必要がありますか (PS 残念ながら、ストアド プロシージャの定義にアクセスできません)。
結果セットをエンティティにマップできるようにするために、ストアド プロシージャによって取得されたものと同じ列を持つデータベース内の物理的なテーブルまたはビューが必要ですか?
助けてくれてどうもありがとう
oracle - Oracle PL/SQL 参照カーソル関数に文字がありません
このコードを実行すると、結果は 636790 になるはずですが、63679 しか返されません。これで脳みそを打ちます!!! 桁が欠けているのはなぜですか?ソース テーブルと列には、正しい数値 636790 が含まれています。
c# - refcursor パラメータ クエリを使用した Dapper/Npgsql ストアド プロシージャ
私は Dapper を使用しています (これ以上ないほど幸せです)。ここで述べたように通常のストアド プロシージャにアクセスする方法は知っていますが、名前を proc に渡すにはどうすればよいですNpgsql
refcursor
か (C# を使用)? 例えば:
次のようなプロシージャがあります。
のパラメータをどのように指定しますxx.getData
か?
たとえば、getData
int 型のパラメーターを 1 つだけ受け入れる場合は、次のように呼び出すことができます。
また
System.DbType
クエリで渡す正しい型が見つかりません。