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

0 投票する
2 に答える
146 参照

plsql - カーソル オブジェクトの for ループから ref_cursor を返す

ref_cursor を for ループ内の変数に割り当て、関数の最後に返そうとしています。ローカル カーソルが複数の結果を取得した場合のループ。

コードのどこでエラーが発生したかを確認しました。ループ内の現在のポイントの ref_cursor を取得し、それを変数に割り当ててから関数に返すことができるループを作成する方法がわかりません。誰かがそれを行う方法を理解するのを手伝ってもらえますか? 以下は、Google検索に関する読み取りに基づくロジックのi回目の試みです。

エラーは「PLS-00382: 式が間違った型です」であり、このエラーに基づいて正しい変数型を割り当てていないことは明らかですが、エラーのある以下のコードは、私がやりたいことと私が何をしたいのかを示しています達成するのに助けが必要です。

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

sql - Oracle SQL - 結果セットを返す関数

Oracle SQL 4.0.0 のバージョンに関して 1 つ質問があります...小さなデータセットを返す関数に関するものです

したがって、プロシージャには3つの受信パラメータと送信データセットがあります...これは私がこれまでに持っているものです

この関数の説明は、複数回呼び出したいということです。そのため、もちろん最初に作成しています。したがって、テーブル内のデータは可能ですが、 を持つ必要はありません。それが IF を持つ理由です。

それから私は単純な Select ステートメントを持っているだけです。そこに数値の substr 関数が必要です。

私の主な問題は、グーグルで半日検索した後... SYS_REFCURSOR Finalを返す方法がわからないことです。これに関するアドバイスはありますか、または少なくとも、関数が必要な結果セットを返すことができるように、これを機能させるために何を変更すればよいか考えていますか?

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

oracle - ピボット句を使用した動的SQLのエラー

この plsql ブロッ​​クの問題を理解するのに苦労しています:

ここでの問題は何ですか、私は多くのことを試しました...おそらく「PIVOT」は動的SQLでは機能しませんか?

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

c++ - OCIDefineByPosは、C++でカーソルを介してNUMBER値を抽出します

OCI を介して Oracle ストアド プロシージャを呼び出し、C++ で out ref カーソルを使用して結果を返す に続いて、NUMBER 列を抽出し、結果を double または long (切り捨て) に格納したいと考えています。

要約すると、sys ref_cursor を使用して OCI 経由でオラクル ストアド プロシージャを呼び出し、結果を反復処理しています。char[] を使用して VARCHAR2 列を簡単に抽出できますが、NUMBER 列は機能しません (整数コンポーネントのみが必要です)。

テーブルは次のように定義されます。

ストアド プロシージャは次のとおりです。

long (long long) と double の両方の変数を使用して SQLT_NUM、SQLT_INT、SQLT_VNU を使用しようとしましたが、それでも 0 以外の整数値を取得できませんでした。コードスニペット:

正しい方向へのポインタは大歓迎です(単純なものを見逃していたらごめんなさい!)。ありがとう

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

oracle - SQL Developer スクリプトの出力で sys_refcursor の幅が切り捨てられる

5 つのテキスト列を含む sys_refcursor を返す関数を定義しました。申し訳ありませんが、業務上の理由により、ここに内容を掲載することはできません。列は、特定の幅 (9、4、10、10、10) で varchar2 にキャストされます。キャストにより、列幅が一定であることを確認できます。

SQL Developer 1.5では、(SQLワークシートからF5を使用して)スクリプト出力を印刷すると、カーソルの内容が次のように適切に表示されます:

ただし、SQL Developer 4.0 では、出力は関数呼び出しの幅で折り返されます (SQLPlus の linesize 引数と同様)。

データベースのバージョンは 11g です。「set linesize 1000」コマンドを使用してみましたが、出力は依然として同じ長さで折り返されます。ただし、linesize 5 を設定すると、5 文字で折り返されます。

「set」コマンドを使用しなくても、SQL*Plus では出力が正常に表示されます。

4.0 でカーソルの内容がラップされないようにする方法はありますか?

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

sql - バインド変数を使用した動的SQL

/

動的に構築された SQL クエリを含むプロシージャを使用して、empno と従業員名を返そうとしています。クエリはバインド変数を使用して構築されていますが、次のエラーが発生します。プロシージャ ORA-06512 を呼び出す方法に問題がある可能性があります。 1 行目 00903.00000 - 「無効なテーブル名」