問題タブ [oracle-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.

0 投票する
1 に答える
1083 参照

sql-server - SSRSでOracleストアドプロシージャを選択すると、Visual Studio2005IDEがクラッシュします

問題の状態

次のように宣言された非常に単純なOracle(11g)ストアドプロシージャがあります。

これは正しくコンパイルされます。カーソルには、col1、col2、およびcol3が含まれます。

SSRSには、Oracle11g用のOracleOLEDBプロバイダーを使用する共有データソースがあります。

(さらにユーザーの資格情報)。

何がうまくいくか:

  • ストアドプロシージャはPL/SQLDeveloperで正しく実行されます
  • の「テスト接続」はSSRSで正常に機能します
  • SELECT * FROM MyTable;コマンドタイプが「text」のクエリ文字列は、SSRSレポートに正しいフィールドを生成します。
  • OracleOLEDBプロバイダーではなく.NETOracleプロバイダー

失敗するもの:

コマンドタイプを「ストアドプロシージャ」に変更して「pr_myproc」と入力すると、「OK」をクリックすると、Visual Studio 2005(Service Pack 2)がハング/クラッシュします。

誰かがこれについての知識/経験を持っていますか?

どんな助けでも大歓迎です。ありがとう。

さらに詳しい情報

プロバイダーをOracleOLEDBプロバイダーから.NETOracleプロバイダーに変更しましたが、魔法のように機能します。

これは、Oracleプロバイダーに問題があることを示しているように思われます。

これ以上の考えはありますか?

0 投票する
1 に答える
1659 参照

oracle - Oracle 関数から複数の行をロックして返すにはどうすればよいですか?

私は、Oracle がどのように処理するかという問題に対処しようとしてきましROWNUMSELECT ... FOR UPDATE SKIP LOCKEDが、ロックされていないいくつかの行を返そうとしています。私は次のいくつかの解決策を試しました: Oracle に SKIP LOCKED を使用して TOP N 行を返すように強制する、およびその質問で見つかったものと非常によく似た他のいくつかの例。Oracle AQ がおそらくこれに対する最善の解決策であることはわかっていますが、データベースをほとんど制御できず、このアイデアに対するかなりの抵抗に遭遇しました。

私が直面している問題は、JDBC を使用して結果を Java に戻そうとすることです。を試しsetFetchSize(20)ましたが、上位 20 行のみがクライアントに配布されるという問題が発生しました。通常、1 つの処理エージェントが 20 行すべてを取得するか、いくつかのプロセッサがいくつかの行を取得し、すべての行を合計すると 20 になりROWNUMますSELECT ... FOR UPDATE SKIP LOCKED

私が試した最も有望な解決策は、次の機能です。

ただし、次のように呼び出してみると:

エラーが発生しましたORA-14551: cannot perform a DML operation inside a queryが、これはトランザクションの問題であることがわかりました。ロックを解除すると、関数は行を返します。

ロックを保持しながら、この関数から複数の行を JDBC に取得するにはどうすればよいですか?

0 投票する
3 に答える
16996 参照

stored-procedures - JavaでOracleSPからsys_refcursorを返すにはどうすればよいですか?

Oracleにストアドプロシージャ(SP)があります。

私のJavaクラスには、SPを呼び出すための次のコード行があります。

それは私がSPを呼び出してカーソルを返すためにオンラインで見つけたものです。コンパイルしようとすると、次の2つのエラーが発生します。

error: cannot find symbol stmt.registerOutParameter(2, OracleTypes.CURSOR);ANDOracleTypeserror: cannot find symbol rs = stmt.getCursor(2);とgetCursorが見つからないと表示されている場合。

import oracle.jdbc.driver.*;またはをインポートしてみましたが、それぞれimport oracle.jdbc.*;エラーが発生しました。error: package oracle.jdbc does not exist import oracle.jdbc.driver.*;error: package oracle.jdbc does not exist import oracle.jdbc.*;

また、適切なフォルダーにojdbc14.jarファイルがあり、クエリ文字列を使用して接続できます。SPを使おうとすると困ります。

SPは現在のCFWebサイトで使用しているものなので、そのまま再利用したいと思います。誰かがこれがうまくいかない理由に光を当てていただけませんか?または、Oracle SPからカーソルを返すために使用する代替コードがある場合はどうなりますか?ありがとう。

0 投票する
1 に答える
2062 参照

oracle - データを挿入するOracle一括収集スクリプト

次のスクリプトがあります

しかし、それは認識しないと不平を言いl_cursor(INDX).col1ます。ここで何が間違っていますか?

0 投票する
1 に答える
16349 参照

oracle - Oracle-このスコープにXという名前の関数は存在しません

SQL Developerを使用して関数に移動でき、すべて正常にコンパイルされるため、関数は明らかにそこにありますが、「呼び出し」の有無にかかわらず関数を使用しようとすると、次のようにスローされます。

エラー(36,24):PLS-00222:このスコープに「x」という名前の関数が存在しません

関数は次のようになります。

これは私がそれを呼んでいる方法です:

ここで、messageTとsomevalueの両方がvarchar2タイプとして宣言されています。

関数内などでカーソルを使用することはできませんか?

0 投票する
0 に答える
185 参照

oracle - 適応カーソル共有 (Oracle)

CURSOR_SHARING パラメータを FORCE に設定し、次のようなステートメントを発行するとします。

、次に適応カーソル共有は、REGION 列にヒストグラムがある場合にのみ発生しますか、それともその列にヒストグラムがあるかどうかに関係なく発生しますか?

この場合、cursor_sharing FORCE、適応カーソル共有、およびヒストグラムの間に関係は存在しますか?

ありがとうございました!

0 投票する
1 に答える
576 参照

oracle11g - SQL カーソルがデータをロードするのはいつですか?

リモートソーステーブルを読み取って、ローカルテーブルを更新する次のスクリプトがあります。スクリプトはエラーなしで正常に実行されています。この投稿は、カーソルの仕組みについて適切に説明することです。

リモート ソース テーブルからデータを読み取りSource_Product、最初に一時テーブルに挿入しますVW_PRODUCT。その後、PRODUCTテーブルを挿入または更新します。

私の質問は。

1) いつproduct_cursorデータをロードしますか? for ループでカーソルを読み取ろうとするときですか? または、カーソルを宣言すると、データがロードされますか?

2) このスクリプトは毎日実行されます。product_cursorが宣言するとすぐに実行される場合は、VW_PRODUCT前日のデータがあります。今日のデータはまだVW_PRODUCTテーブルに挿入されていないためです(挿入クエリはカーソル宣言の後に使用できます)。したがって、 のproduct_cursor後にはレコードがありませんminusysterday_data minus ysterday_dataゼロなので。PRODUCTでは、以下のスクリプトに従って、どのように最新のデータを更新または挿入できますか?

0 投票する
1 に答える
1697 参照

c# - 正しいパラメーターの後でも、呼び出しの引数の数または型が間違っています

この問題について調査するのに多くの時間を費やしましたが、このサイトで同様の投稿はほとんど見つかりませんでしたが、役に立ちませんでした.

誰かが私を助けることができれば。

以下は例外です:

C# コード:

Oracle ストアド プロシージャ:

0 投票する
1 に答える
1045 参照

stored-procedures - %rowtype のカーソル内の動的クエリ

上記のクエリの結果セットを含むレコード タイプを作成する必要があります。

ループ実行ステートメント内で t1 C_BRNGB_EXTRACT%ROWTYPE (および l_BRNGB_EXTRACT 内の t2.col4%TYPE の別の列) を使用できるように

上記のストアド プロシージャの場合、次のエラーが発生します

PLS-00320: この式の型の宣言が不完全または不正です PL/SQL: 項目は無視されました PLS-00597: INTO リスト内の式 'L_BRNGB_EXTRACT' の型が正しくありません PL/SQL: SQL 文は無視されました PLS-00487: 無効です変数 'C_BRNGB_EXTRACT%ROWTYPE' への参照

これを解決するのを手伝ってください。