質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

2回答

3397閲覧

Postgre SQL からC言語のプログラム Make方法・呼び出しについて

Sato_y

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2018/10/09 00:41

前提・実現したいこと

Postgre SQLからC言語のプログラム Make方法・呼び出しをしたい。

Postgre SQLのcontribフォルダの中にC言語のプログラムを置くことで、
PL/pgsqlからファンクションとして呼び出せるところまでの方法を教えて頂けると助かります。

宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

プログラムの処理内容としては、テーブルから値を取って、その値を変更して登録し直すという処理です。
その場合は可能でしょうか... 初歩な質問をして申し訳ございません。

のコメントを拝見すると PostgreSQL に特別な機能を追加するために関数を追加したいというより、C言語のプログラムから PostgreSQL のデータを参照・加工したいというふうに見えるのですが...

C言語から PostgreSQL に接続して、検索、挿入等の処理をするのであれば、PostgreSQL マニュアルの

あたりのドキュメントになるでしょうか。

公式ドキュメント以外であれば...
C言語でPostgreSQLを使う
のサンプルがわかりやすいかもしれません。

投稿2018/10/09 05:04

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sato_y

2018/10/09 05:50

回答有難うございます。 最終的には、PL/pgsqlからc言語のプログラムを呼び出すようにしたいと考えております。 現在は、makeコマンドで走らせる際に、Makefile.portがないため、コンパイルができなくて困っている状態ですね。
guest

0

リファレンスに説明がありますが、こちらは参照済みですか?
36.9. C言語関数

投稿2018/10/09 00:57

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sato_y

2018/10/09 01:02

参照しました。 この通りに行えば、ポスグレ側からC言語のプログラムを呼び出すことは可能でしょうか。。?
sazi

2018/10/09 01:08

どのように「その通り」に行うかがポイントなので、実施してみて詰まったら具体的な内容で質問されるのが良いと思いますよ。
sazi

2018/10/09 01:10

若しくはそのリファレンス上で不明な箇所を質問するとか
sazi

2018/10/09 01:17

pgsqlで出来ない事は、ファイルへの直接I/OとかデバイスやOSにアクセスするような事だだと思いますので、移植とかではなく新規作成ならpgsqlでストアドを作る方が保守は楽です。
Sato_y

2018/10/09 01:23

プログラムの処理内容としては、テーブルから値を取って、その値を変更して登録し直すという処理です。 その場合は可能でしょうか... 初歩な質問をして申し訳ございません。
sazi

2018/10/09 01:47

単なるupdate文で処理できそうですけど。
Sato_y

2018/10/09 01:55

そうなんですね.. それであれば、試してみたいと思います。 今、サンプルのCのソースをコンパイルかけようとしたところ、 c_test.c:1:22: fatal error: postgres.h: No such file or directory #include "postgres.h" というエラーが出たのですが、postgres.hを見つけることができませんでした。 解決方法を知っていたら、教えて頂けると助かります。
sazi

2018/10/09 02:25 編集

いや、update文と言ったのはC言語でなくともできるという事です。 c言語でコンパイルを通すために回答するには動作環境の情報(OSなど)が必要です。 それによってincludeする定義自体も変わってきます。 そもそも、その事について私は詳しく無く、お役には立てないと思いますので、C言語で行うなら質問に上記の情報を追加して、他の回答をお待ち下さい。
Sato_y

2018/10/09 02:46

プログラム側から呼び出すタイミングが異なるため、単純なupdate文では実装することができない。
sazi

2018/10/09 02:59

いえ、ストアドを何の言語で記述するかという事ですよ。 >テーブルから値を取って、その値を変更して登録し直す という事だけなら、PGSQLでも可能だと思います。 変更する値を求めるのにファイルにアクセスしているというなら別ですけど
sazi

2018/10/09 03:07

若しくは、既にC言語での関数があってそれを利用されているという事だとすると、型のマッピングが面倒そうですね。 まあ、分かってしまえばそうでもないでしょうが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問