DBIを使用してPerlスクリプトからPL/PgSQLまたはPL/Perl関数を呼び出すと、RAISEこの機能では、通知またはelog(NOTICE)が使用されます。説明するために:Perl + Postgresql:RAISE NOTICEが存在する場合に関数が値を返さない
を単純なテーブル:
CREATE TABLE "public"."table1" (
"fld" INTEGER
) WITHOUT OIDS;
に単純な関数:Perlスクリプトの
CREATE OR REPLACE FUNCTION "public"."function1"() RETURNS integer AS
$body$
DECLARE
myvar INTEGER;
BEGIN
SELECT INTO myvar fld FROM table1 LIMIT 1;
RETURN myvar;
END;
$body$
LANGUAGE 'plpgsql'
ピース:
use DBI;
...
my $ref = $dbh->selectcol_arrayref('SELECT function1()');
print $$ref[0];
を、それが値を出力し、ようにテーブルから。
しかし、次のように、私はRAISE注意を追加した場合、私は何の結果を得るません:
SELECT INTO myvar fld FROM table1 LIMIT 1;
RAISE NOTICE 'Testing';
RETURN myvar;
私は何かや、そのような行動をしないのですが仕様ですか?
Johnさん、postgresql.confファイルを調整して解決しました。 – Denys