2014-11-01 62 views
0

我的Postgres 9.3如何傳遞命名參數where子句中存儲過程的Postgres

CREATE OR REPLACE FUNCTION f_tsd(koakuupav date, kolkuupaev date) 
    RETURNS TABLE (
isikukood int 
) AS 
$func$ 
select 1 where current_date between koakuupaev and kolkuupaev 
$func$ LANGUAGE sql STABLE; 

嘗試,但遇到錯誤

ERROR: column "koakuupaev" does not exist 

在PLPGSQL它會導致同樣的錯誤,在運行時:

如何將參數傳遞給Postgres中的where子句? 根據文檔命名參數必須工作。

+1

缺少pave?如果我沒有弄錯,在9.2中添加了在SQL函數中使用命名參數的能力。如果您使用的是舊版本,則需要使用$ 1和$ 2。但無論哪種情況,您都需要將返回表的數據類型更改爲'integer'或將'1'更改爲數字值(我想這就是您的第二個版本的問題) – 2014-11-01 14:39:13

+0

我正在使用9.3。根據文檔命名參數必須工作。我將返回類型更改爲整數,但問題仍然存在 – Andrus 2014-11-01 18:03:26

回答

3

第一個參數名稱koakuupav是Postgres的版本,您使用的,而不是paev

f_tsd(koakuupav date, kolkuupaev date) 

between koakuupaev and kolkuupaev 
相關問題