この質問は私の前の質問に関連しています:unixODBC C APIと同等のRaiseError(PERL、DBI)?
後で問題を切り分けたので、新しい質問を投稿します。それは、より具体的で、切り分けられ、不要な情報がないものです。
バージョン:unixODBC 2.3.0
lib:unixODBC-C API
ストアドファンクションがあるとします:
CREATE FUNCTION "test".func() RETURNING LVARCHAR(1000);
set debug file to '/home/directory_does_not_exists/unknown.log';
trace off;
trace on;
trace off;
return 'result is set here';
END FUNCTION;
そして同じボディですが、ストアドプロシージャにあります:
CREATE PROCEDURE "test".proc(pDummy SMALLINT)
set debug file to '/home/directory_does_not_exists/unknown.log';
trace off;
trace on;
LET pDummy = 2;
trace off;
END PROCEDURE;
ご覧のとおり、まったく同じです。デバッグファイルへのパスが間違っているため、エラーが発生する可能性があります。call func()
エラーから実行するとAqua Data Studio
、エラーが検出されます。
Cannot open DEBUG file for SPL routine trace
も同じですcall proc(1)
。
しかし、 unixODBCSQLExecute
を介して(を使用して)これらの2つの呼び出しを実行すると
execute procedure proc(1);
戻りますSQL_ERROR
(これは期待されて問題ありません)が、
execute function func();
戻り値SQL_SUCCESS
..しかし 'result is set here'
、返されません。代わりに、空の文字列(''
)が返されます。
実行call func()
すると、と同じ結果が得られます。execute function func();
を呼び出すと、がSQLMoreResults
返されます。SQL_NO_DATA
SQLFetch
SQL_ERROR
何か案は?