電子書籍の厳選無料作品が豊富!

now()の結果を返すだけの以下の2つのPL/pgSQLを試しに作りました。SQL1は正しく結果が返ってきますが、SQL2は結果が何も返ってきません。どなたか説明できる方、いらっしゃいますでしょうか。宜しくお願い致します。

■SQL1
CREATE OR REPLACE FUNCTION select_now1() RETURNS date AS $$

DECLARE
d_currentDATE:= NULL;

BEGIN
SELECT INTO d_current now();
RETURN d_current;

END;
$$ LANGUAGE PLpgSQL;

■結果1
select_now1
-------------
2011-03-19
(1 行)


■SQL2
CREATE OR REPLACE FUNCTION select_now2(OUT d_current date) AS $$

DECLARE
d_currentDATE:= NULL;

BEGIN
SELECT INTO d_current now();

END;
$$ LANGUAGE PLpgSQL;

■結果2
select_now2
-------------

(1 行)

A 回答 (1件)

SQL2 では DECLARE d_current DATE:= NULL; が不要です。

この2行を削除すれば、結果が返ることを確認しました。名前がかぶっているため、OUT パラメータを隠してしまっているようです。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。教えて頂いた方法でできました。
OUTパラメータに指定した変数はDECLAREで宣言してはいけないのですね。
どうもありがとうございました。

お礼日時:2011/03/20 10:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す