問題タブ [embedded-sql]
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.
null - 行のフェッチ中に空白が問題を引き起こす (Informix)
NULL Vs Blank の常に興味深い問題は、今私を少し夢中にさせています。
2 つのテーブルを表す 2 つの ESQL/C 構造があります。カーソル内の 1 つのテーブルから行をフェッチしています。このフェッチからの 2 つのフィールドの値を使用して、別のテーブルから行を取得します。2回目のフェッチで確実に1行が返されることは事前にわかっています。
これで、2 番目のテーブルに空白の値を含めることができます。空白とは、「」のような値を意味します。アンロードすると、これらの文字が「\」として表示されます。しかし、C プログラム内では、これらは取得されていないと思います。
または、これらの値が存在するかどうかを確認できません。char *value の値をフェッチすると仮定すると、
if (値[0] == '\0') または if (値[0] == ' ')
動作しません。gdb は value = "\000", ' ' のようなものを示します。しかし、C コードからこれを確認することはできません。
パイプ区切りファイルを使用してテーブルを手動でロードしました。空白を挿入するために、|\ | と入力しました。
誰でも私が間違っているところを教えてください。
c++ - 使用されているが定義されていないラベルを取り除く方法
埋め込み SQL でテーブルの行を印刷しようとしています。私はこのコードを持っています。ここで、publication はテーブルで、pubid は属性です。私はこれを試しました:
コンパイラから次のエラーが表示されます: エラー: ラベル 'close_c1' が使用されていますが、定義されていません。これを修正するにはどうすればよいですか?
informix - InformixDynamicServerでのTEXT更新とTEXT挿入
ESQLスタイル(Informix API)呼び出しで記述されたサードパーティのInformixドライバーを維持しています。私は、TEXTフィールドの場合、INSERTが正常に機能し、UPDATEが失敗するバグに取り組んでいます。コードをステップスルーすると、sqlda構造をチェックして、バインドするかどうか、およびバインドする方法を確認していることがわかりました。sqli_describe_statementを呼び出した後、sqlda.sqld変数には2が含まれ、正しい数のバインドされたパラメーターが含まれます。この挿入呼び出しでは、パラメーターが正しく設定されているように見えますが、更新の場合、返される数値は0であり、パラメーター情報はありません( "UPDATE TESTTAB SET COLNAME =?WHERE OTHERCOLNAMEの1つのパラメーターの場合は1である必要があります)。 = 1 ")。
sqlda情報を使用して、INSERTに必要なロケーター構造を正しく設定しましたが、情報がないため、更新できません。デバッガーでそれを偽造し、更新のためにロケーターのセットアップコードを実行すると、正常に更新されます。
ステートメントは確かに正しいように見え、UPDATEバインドと同じ変数がINSERTに使用されています。さらに、sqli_prepは更新に問題はありません。describeの場合、sqsla.codeはさまざまな非負の数4と6を返します。これは、説明されているさまざまなタイプのステートメントを文書化されたもの(つまり、エラーコードではない)として表すため、明らかな問題はありません。
この奇妙な振る舞いを引き起こす可能性のある、この前にコードをチェックインする必要がある他の何かがありますか(さまざまなクエリの特殊なケースの処理以外-そこには何もありません)
ここで、ロケーターオブジェクトを作成し、行を見つけて、かかとを3回クリックして「IBMのような場所はない」と言う必要があるなど、TEXTフィールドのUPDATEを行う方法について基本的なことを見逃していますか?
これまでのところ、Google Fuはドキュメントにほとんど登場していませんが、その方法を示すドキュメントやサンプルを知っているなら、それもすばらしいことです。
syntax-highlighting - EclipseCDTおよびESQL構文エラー
Eclipse CDT(Heliosリリース)を使用して、ESQLも使用する(古い)Cアプリケーションのソースコードを編集しています。このプロジェクトでは、慣例により、ESQLコードを含むファイルの拡張子は.sc(デフォルトの.cではなく)になります。
たとえば、EXEC SQLキーワードで始まるすべてのESQLセクションには、「構文エラー」のフラグが付けられます(垂直ルーラー、概要ルーラー、および琥珀色の波線)。実際のコンパイルは、ESQLコンパイラを備えた別のマシン(Unix)で実行されます。開発マシンでSQLコードの構文を確認するにはどうすればよいですか?
注:[設定]/[一般]/[エディター]/[テキストエディター]/[注釈]/[C / C ++インデクサーマーカー]から通知を非表示にすることはできますが、これにより、有用な警告が非表示になる場合があります。
oracle - ESQL でデッドロックが発生したときに sqlcode が DEADABORT を返さない
ESQL を使用してデッドロックを管理する方法を理解しようとしています。O'Neil の本「Database」にある例とまったく同じように、「customers」テーブルを更新しようとする 2 つの同時プロセスを作成しました。 22deadabort%22+oracle&source=bl&ots=2QF7eSbaW6&sig=IcEZtSXINKrOVro1UN-ShlNsAak&hl=en&ei=9BPvTKPfMtP4nwfqu_X1Cg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CBcQ6AEwAA#v=onepage&q=oraclef22%deadabort%2=false&22%deadabort%2
しかし、何らかの理由で、1 が終了するのを待っているプロセス 2 は、「exec sql update customers」ステートメントでブロックされ、「if(sqlca.sqlcode == DEADABORT)」ステートメントには決して入りません。したがって、デッドロックを管理することはできません。
誰かアイデアがありますか?
database - ESQL は業界で使用されていますか?
私はデータベース コースを受講しており、コマンド ライン アプリケーションを作成する必要があります。教授は、私たちに ESQL (embed SQL) アプリケーションを作成するよう求めています。
こういう技術は衰退している気がします。
c++ で esql コードを変換するには、Oracle プリコンパイラを使用する必要があります。この種のアプリケーションは、維持するのが大変に見えます。
php アプリケーションも問題なく動作しますが、おそらくコマンド ライン アプリケーションを使用してより迅速に採点を行う必要があります (入力フィードを使用した単体テスト)。Embed SQL は業界で使用されていますか? 教授に Java アプリケーションの作成を依頼する価値はありますか? より適切な別の技術はありますか?
sql - DB2の問題を解決する方法、または解決を開始する方法は?
埋め込み SQL ステートメントを含む DB2 Cobol アプリケーションをプリコンパイルしようとすると、SYSTERM
ファイルに次のエラーが表示されます。
エラーは、手続き部セクションが見つからないことだと思いますが、次のコードにあります。
c++ - Oracle pro*c によって前処理された .h ヘッダー ファイル内の EXEC SQL DECLARE 変数
SQL が埋め込まれた C++ コードを、Oracle データベースを備えた Linux サーバーに移植しています。
データ アクセス オブジェクトは、.select() .insert() .findByPrimaryKey() など、データベース インタラクション用のメソッドを提供する C++ クラスです。
これは、testdao.h ヘッダー ファイルです。
これはtestdao.ecppファイルです
Oracle pro*C プリコンパイラは、ヘッダー ファイル内の EXEC SQL を処理できません。各メソッドでホスト変数を繰り返し宣言する必要がないように、ホスト変数を宣言するにはどうすればよいですか?
それらをグローバル変数として持つことはできません。
sql - ESQL/C を使用して Oracle で行を削除する
C と ESQL でプログラムを作成しようとしています。私がやりたいことの 1 つは、プログラムが実行されるたびに (SYSDATE と比較して) テーブルの 1 つから古い行を削除することです。
したがって、私のSQLコードは次のようになります。
SQL+ワークシートでテストしたので、これが機能することがわかりました
しかし、次のように ESQL で実行したい場合:
私のプログラムはそこでフリーズします。
だから私は、ESQL でそのようなステートメントを作成できるかどうかを知りたいと思っていました。
postgresql - 配列引数を使用したストアドプロシージャのECPG呼び出し
ECPGクライアントがデータを取得しようとしています。これは、4つの引数を取るストアド関数 "getsipid"を使用して、subselect句でプリペアドステートメントを使用します。私はこれを単純なvarcharとして宣言された4番目の引数で動作させました。4番目の引数を配列として宣言しようとしましたが、ecpgは4番目の引数で配列の最初の引数のみを渡し、すべてではありません。
requsr(s)のすべてのarryを渡すための秘訣は何ですか。この配列サイズには、通常、最大5つの引数しか含まれません。この問題を克服するために、関数に引数を追加するだけでよいことに気付きました。私は、ソリューションがよりエレガントになることを望んでいました。
コメントしてくれてありがとう
デイブ
pgcファイルは上記のホスト変数を準備し、エフェクトの呼び出しがあります。
ストアド関数は次のように宣言されます