問題タブ [occi]
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.
c++ - OCCIでSQL文のタイプを決定
Oracle C++ Call Interface (OCCI) を使用して、Oracle 用の汎用データベース処理レイヤーを作成しています。アプリケーションの他の部分から提供された SQL 文字列を受け入れる必要があり (それがどのようなステートメントであるかは示されません)、そのステートメントのタイプがアプリケーションの呼び出し側で許可されていることを確認し、許可されている場合は、代わりにそれを実行する必要があります。発信者の。
ただし、提供された SQL 文字列に基づいて作成した OCCI ステートメントから SQL ステートメントの種類 (select、update、delete など) を取得する効率的な方法が見つかりません。
OCIAttrGet()
OCI では、OCI ステートメント ハンドルを呼び出しOCI_ATTR_STMT_TYPE
てパラメーターに渡すことでこの情報を取得attrtype
できますが、OCCI で同等の関数を見つけることができません。
を呼び出して OCCI ステートメントから OCI ステートメント ハンドルを取得できgetOCIStatement()
ますが、これまでのところ、この OCI ステートメント ハンドルからステートメント タイプ属性を取得する試みは失敗しています。
上記を実行するresult = -2
と、変更はありませんstatementType
いずれにせよ、このアプローチはかなり後進的であり、むしろ OCCI でクリーンに動作すると思います。
準備されたOCCIステートメントのSQLステートメントタイプを判断する方法を知っている人はいますか(効率的でも安全でもない生のSQL文字列を解析する以外に)?
c++ - C++およびOCCIの「実行」メソッドでVARRAYを読み取る方法は?
Oracle 11g データベースから VARRAY 要素を読み取るのに苦労しています。私はCPP occi DLLを使用しています。他の型を読み取って VARRAY 型を更新できますが、VARRAY 値を選択しようとすると、occi dll で「アクセス違反」例外が発生します :(
単純化されたシナリオは次のとおりです。
私がする時
大丈夫ですが、同じ方法でVARRAYにアクセスしようとすると
私は得る
OracleTester.exe の 0x0094a46d での初回例外: 0xC0000005: アクセス違反の読み取り場所 0x0000000000000120。
私が間違っていることは何ですか?VARRAY データを取得するには、別の API を使用する必要があるのでしょうか? またはいくつかの準備をしますか?
ヒントをいただければ幸いです...
c++ - エラー: armadillo と oracle occi の互換性の問題で、'sword' への参照があいまいです
armadillo c++ では、いくつかの API を使用し、Oracle occi を使用して値を Oracle テーブルに挿入しようとしましたが、次のようなエラーが発生しました:-
私のサンプルコードは次のとおりです。 - main.cpp
db_manager.cpp
db_manager.h
common_struct.h
global_variable.h
メイクファイル:
c++ - Oracle occi と C++ を使用して 1,300 万行をファイルにダンプする
データベースのテーブルから形式のファイルにデータをエクスポートしようとしていcsv
ます。以下のプログラムを思いつきました。私のテーブルには約13 million
行が含まれており、このプログラムは非常に遅いです。
このプログラムを高速化するにはどうすればよいですか?
c++ - Oracle OCCI UString から std::wstring へ
Oracle DB プロバイダーには、UTF16 文字セットを扱うときに使用される UString という用語があります。
定義方法は次のとおりです。
私のアプリは Unicode に wstring を使用し、ご存知のように std::wstring は wchar_t をラップします。これは unsigned short ではなく、C++ の内部型です。VCproj の C++ 言語設定に、wchar_t を内部型として使用するかどうかのオプションがあることは知っていますが、内部型のままにしておくことを好みます。
だから私の問題は、すべての UString を wstring にキャストすることなく、OCCIUTF16 で OCCI を使用する方法ですか?
c++ - Oracle occi 接続プールが ORA-00001 を報告します: 一意の制約 (%s.%s) 違反エラー
以下のコードを試しました
そして、次のエラーが報告されました: 'oracle::occi::SQLException' のインスタンスをスローした後に呼び出されて終了します。
おそらく、ラップトップの電源が切れて異常にシャットダウンしたためだと思います。正しくするにはどうすればよいですか?
ありがとうございました。
c++ - Oracle OCCI/OCI では、LOB を読み取るためのバッファは実際のデータより大きくする必要がありますか? ORA-32116 の取得
CLOBstd::vector
から OCCI 経由でデータを読み取ります。単純化されたコードは次のようになります。
これにより、エラー ORA-32116 が発生し、バッファ サイズ (read の 3 番目の引数) は、読み取るデータの量 (read の 1 番目の引数) と同じかそれ以上である必要があります。この条件は明らかに保たれています。
バッファー サイズを 4*len に増やした後:
操作は適切に行われます。これまで、 と の値have_read
はlen
常に同じでした。
文書化されていない余分なスペースがバッファーに必要ですか? それとも完全なページが必要ですか?
「Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit」を使用しています。
このトピックに関する説明は大歓迎です。