私はパラメータとして日付を取る関数をPostgreSQL 9.5に書こうとしています。私のテーブルには、inception_dateという列があります。この関数は、inception_dateが変数として提供された日付よりも大きいテーブルからすべての行を返すようにします。以下は私の関数である:私は他のデータ型よりもposgreSQL機能に異なる方法で処理された日付を言って任意の情報を見つけることができていないPostgreSQL関数で日付を変数として使用するにはどうすればよいですか?
CREATE OR REPLACE FUNCTION somefunc(date) RETURNS setof table AS
$BODY$
DECLARE variable ALIAS FOR $1;
BEGIN
RETURN QUERY SELECT * FROM table WHERE inception_date > variable;
END;
$BODY$
LANGUAGE 'plpgsql';
SELECT somefunc('2014-07-02');
が、この機能は、任意の出力を表示しませんクエリしばらく
SELECT * FROM table WHERE inception_date > '2014-07-02';
は15行を返します。誰がここで間違っているかもしれないか知っていますか?
実際に 'select somefunc( '2014-07-02');'と 'SELECT * FROM table WHERE inception_date> '2014-07-02';'は同じではありません。この関数は 'record 'クエリが個々の列を返すときに入力します。どのように結果を確認していますか? – Abelisto
さて、関数定義にパラメータ名を入れるだけでなく、 "plpgsql"言語仕様を引用するのではなく、 "ALIAS FOR"を使用するのはちょっと古風ですが、作業。見た目には何かがありません。 "SELECT * FROM somefunc ..."で正しく呼び出すことから始めます。次に、(1)テーブル全体を返すだけで単純化し、(2)一定の日付に対して明示的にチェックします。それが何であるか教えてください。 –
'inception_date'という列はどのような型ですか? –