問題タブ [ecpg]
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.
postgresql - 配列引数を使用したストアドプロシージャのECPG呼び出し
ECPGクライアントがデータを取得しようとしています。これは、4つの引数を取るストアド関数 "getsipid"を使用して、subselect句でプリペアドステートメントを使用します。私はこれを単純なvarcharとして宣言された4番目の引数で動作させました。4番目の引数を配列として宣言しようとしましたが、ecpgは4番目の引数で配列の最初の引数のみを渡し、すべてではありません。
requsr(s)のすべてのarryを渡すための秘訣は何ですか。この配列サイズには、通常、最大5つの引数しか含まれません。この問題を克服するために、関数に引数を追加するだけでよいことに気付きました。私は、ソリューションがよりエレガントになることを望んでいました。
コメントしてくれてありがとう
デイブ
pgcファイルは上記のホスト変数を準備し、エフェクトの呼び出しがあります。
ストアド関数は次のように宣言されます
c - PostgreSQLecpgプログラムはデータベースへの変更を保存しません
ラップトップでpostgresqlサーバーを使用しており、epcgを使用してCプログラムを介してデータベースに接続しようとしています。プログラムをプリコンパイル、コンパイル、実行するために、次のコマンドを作成しました.pgc
。
私のプログラムはコンパイルされて正常に実行されています。つまり、エラーは表示されていません。
しかし、コマンドラインプロンプトで
コマンドCOMMAND- psql
database を使用してデータベースを取得しようとすると、
テーブルに更新がありません。つまり、プログラムで作成したコマンドがデータベースで更新されていません。
以下は.pgc
ファイル内のコードです:
以下は、プリコンパイル後のCのコードです。
postgresql - ecpg は、ソース ファイルを含むディレクトリから実行しない限り、インクルードを見つけることができません
ecpg は、ソースを含むディレクトリから実行すると、EXEC SQL INCLUDE ヘッダー ファイルを正常に検出できますが、他のディレクトリからは検出できません。
これがイラストです。コンパイル成功:
インクルード パラメータが欠落しているため、失敗することが予想されます:
ecpg インクルード パラメータを追加します。それでも失敗します:
src ディレクトリへの絶対パスを指定してみました。改善なし。-o が必要ないことは承知しています。
PostgreSQL 9.2 を使用しています。ecpg のバージョン情報は次のとおりです。
postgresql - Postgresql モード INFORMIX または INFORMIX_SE
PostgreSQL
とには、 、ecpg
の 2 つの互換性モードがあります。INFORMIX
INFORMIX_SE
INFORMIX
設定モードと設定モードに違いはありINFORMIX_SE
ますか?このPostgresql Docに関する詳細はわかりません
ありがとう。
postgresql - ecpg エラー: break ステートメントがループまたはスイッチ内にありません
私はecpgコードを書きました。タプルがテーブルに既に存在するかどうかに基づいて、タプルをテーブルに挿入しようとしています。コンパイル時に「エラー: break statement not within loop or switch」が表示される
sql - PostgreSQL なぜ/いつ ECPG を使用する必要があるのか
ゲーム プロジェクト (C++) のデータベースとして postgreSQL を使用することにしました。
現在、私は Oracle を使用しており、Pro*C プリコンパイラが動作していて、postgreSQL にも ECPG と呼ばれる同様のものがあると聞きました。
文字列で SQL を使用して、postgres データベースのデータに直接アクセスすることもできます。
したがって、「通常」と ECPG の使用の違いは、SQL ステートメントをコードのように記述できることですか?それとも、他に注意すべき違いはありますか?
(PS: 仕事で使用していることは知っていますが、他に違いはありません)
皆さんからのご連絡をお待ちしております。
c - C 接続の問題に埋め込まれた SQL
Postgresql ロールは、db 'university' の所有者であり、次のように構成されています。
ユーザー カヌーのパスワード 'mypassword' を変更します。
C に埋め込まれた SQL コードの一部は、DB に接続するだけです。
printf("SQLSTATE=[%s]\n", SQLSTATE);
EXEC SQL CONNECT TO 'university' USER 'canoe/mypassword'
printf("SQLSTATE=[%s]\n", SQLSTATE);
コードがコンパイルされ、リンクされます。これは、postgresql サーバーが実行され、そのデフォルト ポートでリッスンしている localhost で実行されます。
$ ecpg connection.pgc
$ gcc -I/usr/include/postgresql connection.c -o conn -lecpg
コンパイルされたコードの出力は次のとおりです。
SQLSTATE=[00000]
SQLSTATE=[08001]
エラー コード 08001 は、"sqlclient_unable_to_establish_sqlconnection" を意味します。コードをデバッグするために、すべての接続試行をログに記録するように postgresql の構成を変更しました。
ログ: パラメータ "log_connections" が "on" に変更されました
ログ: 00000: パラメータ "log_error_verbosity" が "verbose" に変更されました
ただし、コンパイルされたコードを実行すると、エラーは発生しません。pgsqlに接続すると、ログ情報があります。
$ pqsqlUniversity -W
LOG: 接続が承認されました: user=canoe database=university
私が気づいた有線の問題は、プロンプトの後に間違ったパスワードを入力しても、認証を受けることができることです。しかし、私の C コードは機能しません。
問題を解決できないか、さらにデバッグする考えがありません。問題はどこにあるのでしょうか?