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

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

postgresql - 配列引数を使用したスト​​アドプロシージャのECPG呼び出し

ECPGクライアントがデータを取得しようとしています。これは、4つの引数を取るストアド関数 "getsipid"を使用して、subselect句でプリペアドステートメントを使用します。私はこれを単純なvarcharとして宣言された4番目の引数で動作させました。4番目の引数を配列として宣言しようとしましたが、ecpgは4番目の引数で配列の最初の引数のみを渡し、すべてではありません。

requsr(s)のすべてのarryを渡すための秘訣は何ですか。この配列サイズには、通常、最大5つの引数しか含まれません。この問題を克服するために、関数に引数を追加するだけでよいことに気付きました。私は、ソリューションがよりエレガントになることを望んでいました。

コメントしてくれてありがとう

デイブ

pgcファイルは上記のホスト変数を準備し、エフェクトの呼び出しがあります。

ストアド関数は次のように宣言されます

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

c - PostgreSQLecpgプログラムはデータベースへの変更を保存しません

ラップトップでpostgresqlサーバーを使用しており、epcgを使用してCプログラムを介してデータベースに接続しようとしています。プログラムをプリコンパイル、コンパイル、実行するために、次のコマンドを作成しました.pgc

私のプログラムはコンパイルされて正常に実行されています。つまり、エラーは表示されていません。
しかし、コマンドラインプロンプトで
コマンドCOMMAND- psqldatabase を使用してデータベースを取得しようとすると、

テーブルに更新がありません。つまり、プログラムで作成したコマンドがデータベースで更新されていません。

以下は.pgcファイル内のコードです:

以下は、プリコンパイル後のCのコードです。

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

postgresql - ecpg は、ソース ファイルを含むディレクトリから実行しない限り、インクルードを見つけることができません

ecpg は、ソースを含むディレクトリから実行すると、EXEC SQL INCLUDE ヘッダー ファイルを正常に検出できますが、他のディレクトリからは検出できません。

これがイラストです。コンパイル成功:

インクルード パラメータが欠落しているため、失敗することが予想されます:

ecpg インクルード パラメータを追加します。それでも失敗します:

src ディレクトリへの絶対パスを指定してみました。改善なし。-o が必要ないことは承知しています。

PostgreSQL 9.2 を使用しています。ecpg のバージョン情報は次のとおりです。

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

postgresql - Postgresql モード INFORMIX または INFORMIX_SE

PostgreSQLとには、 、ecpgの 2 つの互換性モードがあります。INFORMIXINFORMIX_SE

INFORMIX設定モードと設定モードに違いはありINFORMIX_SEますか?このPostgresql Docに関する詳細はわかりません

ありがとう。

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

postgresql - ecpg エラー: break ステートメントがループまたはスイッチ内にありません

私はecpgコードを書きました。タプルがテーブルに既に存在するかどうかに基づいて、タプルをテーブルに挿入しようとしています。コンパイル時に「エラー: break statement not within loop or switch」が表示される

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

sql - PostgreSQL なぜ/いつ ECPG を使用する必要があるのか

ゲーム プロジェクト (C++) のデータベースとして postgreSQL を使用することにしました。

現在、私は Oracle を使用しており、Pro*C プリコンパイラが動作していて、postgreSQL にも ECPG と呼ばれる同様のものがあると聞きました。

文字列で SQL を使用して、postgres データベースのデータに直接アクセスすることもできます。

したがって、「通常」と ECPG の使用の違いは、SQL ステートメントをコードのように記述できることですか?それとも、他に注意すべき違いはありますか?

(PS: 仕事で使用していることは知っていますが、他に違いはありません)

皆さんからのご連絡をお待ちしております。

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

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 コードは機能しません。

問題を解決できないか、さらにデバッグする考えがありません。問題はどこにあるのでしょうか?