問題タブ [oracle-call-interface]

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 に答える
2203 参照

c++ - OCILIBを使用して出力変数を使用してOracleプロシージャを呼び出す

次の署名のある手順があります。

OCILIBを使用して実行すると、oCountの正しい値を取得できません。(OCI_RegisterIntを使用して)整数として登録すると、次のエラーが発生します。

ORA-03116:変換ルーチンに渡されたバッファ長が無効です

文字列として登録すると実行されますが、OCI_GetStringはnullポインタを返し、OCI_GetIntは(期待される結果1ではなく)0を返します。

テストコードは次のとおりです。

たとえば、PL /SQLDeveloperを使用してプロシージャを実行すると正常に動作します。

これは、OCILIBを使用してプロシージャを呼び出す正しい方法ですか?

また、ライブラリの混合バージョンを使用していることにも注意してください。

0 投票する
4 に答える
843 参照

oracle - Oracle OCI API を使用するには C プログラミングが必要ですか?

私はここを見ていました:

http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28395/toc.htm

しかし、すべてが C または C++ のように見えます。OCIを使用するために他の言語を使用できますか?

ありがとう。

編集: LOB オブジェクト (blob、clob など) のダイレクト パスを使用する必要があります。そのためには OCI を使用する必要があると思います。

編集: OCI の仮定はこれに基づいています: 直接パスを LOB 列に挿入できますか?

0 投票する
4 に答える
3076 参照

oracle-call-interface - OCIを使用した一括挿入

現在、OCI を使用して C++ コードからテーブルにレコードを 1 つずつ挿入しています。データは構造体のハッシュマップにあり、マップの要素を繰り返し処理し、構造体の属性をテーブル内のレコードの列にバインドします (例:

挿入クエリを定義する レコードのすべての列に OCIBindByname( ) を使用する マップを反復する 構造体 OCIStmtExecute の属性としてバインド変数を割り当てる end

これはかなり遅いので、一括挿入して高速化したいと思います。これを行う良い方法は何ですか?すべてのレコードを1つのOCIStmtExecuteに挿入するには、構造体の配列を使用する必要がありますか? これを行う方法を示すサンプルコードはありますか?

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

sql - to_date 関数での ORA-00911 エラー

このリクエストは意図したとおりに機能します。

残念ながら、最後に追加するとエラーが発生します。

Web インターフェイスを使用しています。エラー メッセージは次のとおりです。

警告: oci_execute() [function.oci-execute]: ORA-00911: /opt/csw/apache2/share/htdocs/DAE/sites/default/modules/data_repository/data_repository.inc の 117 行目に無効な文字があります。

警告: oci_fetch_row() [function.oci-fetch-row]: ORA-24374: /opt/csw/apache2/share/htdocs/DAE/sites/default/modules/daedatabase/ でフェッチまたは実行およびフェッチの前に定義が行われていません852行目のdaedatabase_db.inc。

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

php - 奇妙なORA-01858エラー

PHPエラーログを調べると、特定のストアドプロシージャに関連するORA-01858エラーのエントリが頻繁に表示されます。このエラーコードを検索すると、常にTO_CHAR()関数に不正な入力を渡した結果であることがわかります。問題は、問題のストアドプロシージャにはTO_CHAR()関数が1つしかなく、渡す値は実際にはハードコーディングされていることです。(これはNVL(()の2番目のパラメーターです)。コードは次のとおりです。

このプロシージャでTO_DATE()を使用するのはこれだけですが、なぜORA-01858エラーが発生するのでしょうか。そのようなエラーを生成できる他のシナリオはありますか?問題の一部は、これがたまにしか起こらないことです。一般に、このストアドプロシージャを使用するプログラムは正常に動作します。これについて私が知っている唯一の理由は、エラーログを確認することです。

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

jdbc - OCI JDBC ドライバと NLS の設定

NLS_SORT と NLS_COMP の 2 つの NLS 設定を設定するために、セッションを変更する「ログオン後」トリガーを作成しました。NLS_SORT を BINARY_CI に設定し、NLS_COMP を LINGUISTIC に設定する必要があります。接続の確立後に V$NLS_PARAMETERS ビューを問い合せて値を確認すると、 NLS_COMP パラメータは更新されますが、 NLS_SORT は更新されないことがわかります。

さらに調査した結果、接続が確立された後にOCI JDBCドライバーが以下のクエリを実行することがわかりました

NLS_SORT は NLS_LANGUAGE から値を導出するため、NLS_SORT パラメータ値は BINARY_CI ではなく BINARY にリセットされます。NLS_LANGUAGE 設定は、Windows レジストリから取得されます。

  1. oci jdbc ドライバーはこれらのクエリを実行して、クライアントの NLS 設定をデータベース サーバーと同期しますか?

  2. alter session set NLS_LANGUAGE クエリの実行を回避するように jdbc oci ドライバーを構成できますか?

2 番目の質問をする理由は、アプリケーション サーバー (glassfish、tomcat、jboss など) マシン (OCI クライアントがインストールされている) の設定がデータベース サーバーの設定を上書きするのは意味がないからです。

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

php - CMD の Php.exe が「未定義関数 oci_connect() への呼び出し」をスローする

Windows XP に PHP 5.2.6 と共に XAMPP をインストールしました。私の php.ini では、次の行のコメントを外しています。

  • 拡張子=php_oracle.dll
  • 拡張子=php_oci8.dll

次のようなファイルがあります。

しかし、そのファイルへの cmd を介して php.exe を呼び出そうとすると、コンソールに常にエラーが表示されます。

致命的なエラー:未定義関数 oci_connect() の呼び出し

私のローカルホストでは、これに問題はありません。

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

c - OCIでsql_idを取得する方法

呼び出し後にsql_id/子番号/プランハッシュを取得する方法はありOCIStmtExecute()ますか?で見ることができませんOCIAttrGet()

注:見ることができない通常のユーザーとしてv$session-私ができればそれは実行するのと同じくらい簡単ですselect prev_sql_id, prev_child_number from v$session where sid=sys_context('USERENV', 'SID')

ありがとう!

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

php - PHP または PHP でタイムアウトを指定して SQL クエリを実行し、既に開始されている SQL クエリを停止するには?

oci_cancelのドキュメントを読みましたが、少しあいまいに思えます。

oci_cancelサーバーのSQLプロセスを強制終了しますか?

そうでない場合、SQL クエリを実行し、しばらく待機し、クエリが 10 秒を超えた場合 (たとえば)、サーバーでクエリをキャンセルするスクリプトを作成するにはどうすればよいですか?

この質問が以前に尋ねられた質問と似ている場合は申し訳ありませんが、満足のいく答えが見つかりませんでした.

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

oracle - どのようにgetConnectionociリソース?

リソースoci(接続)を取得する必要があります。メソッドoci_new_descriptorを実行するには、save、oci_commit、およびclose

コード:

エラー-アダプタパラメータは、配列またはZend_Configオブジェクトに含まれている必要があります。