実現したいこと
psqlodbc接続にてPostgreSQLのストアドプロシージャを実行したいです。
※VB6からpsqlodbc接続にてPostgreSQLのストアドプロファンクションは実行できています。
※PostgreSQLのバージョンは15.5です。PostgreSQLはWindowsにインストールしています。
※psqlodbc ドライバは「psqlodbc_09_03_0300」を使用しています。
発生している問題・分からないこと
以下のVB6ソースコードにてストアドプロシージャを実行したつもりですが、
PostgreSQLのログ(インストール先の\15\data\log)を確認すると、以下の通り、プロシージャを実行する場合はCALLで実行する必要がある旨出力されております。
JST [5368] HINT: To call a procedure, use CALL.
JST [5368] STATEMENT: SELECT * FROM proc_test()
該当のソースコード
Dim g_db_Con As New ADODB.Connection 'DB接続 Dim mCmd As New ADODB.Command '' コマンドオブジェクト Dim mRs As New ADODB.Recordset '' レコードセットオブジェクト If Open_Database(g_db_Con, "xxx.xxx.xxx.xxx", "db1", "postgres", "pass", 60) <> 0 Then Exit Sub End If Set mCmd = Nothing With mCmd strStored = "proc_test" .CommandText = strStored .CommandType = adCmdStoredProc .ActiveConnection = g_db_Con .CommandTimeout = 60 End With Set mRs = mCmd.Execute
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Set mRs = mCmd.Executeを実行すると以下の例外が発生します。
・Err.Number
-2147467259
・Err.Description
ERROR: proc_test() is a procedure;
Error while executing the query)
補足
psqlodbcドライバのバージョンとpostgreSQLのバージョンは一致していると理解しています。(理解が間違えている可能性はあります)
ストアドプロシージャーがpostgreSQLに追加されたのはV11以降とのことですので、「psqlodbc_09_03_0300」ではストアドプロシージャに対応していない可能性があると思い、「psqlodbc_15_00_0000」のドライバをインストールし、同じソースで実行しました。
これで動作すると思いましたが、残念ながら現象は変わりませんでした。(VB6側のDescriptionもpostgreSQL側のLOGも同じ結果)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。