2010-03-19 238 views
2

我已經按照下面顯示的內容寫了一個pgsql函數。我如何擺脫$ 1,$ 2等,並用真實的參數名稱替換它們以使功能代碼更具可讀性?Postgres:在pgsql函數中使用函數變量名

問候

彼得

CREATE OR REPLACE FUNCTION InsertUser (
    UserID UUID, 
    FirstName CHAR(10), 
    Surname VARCHAR(75), 
    Email VARCHAR(75) 
) 
RETURNS void 
AS 
$$ 
INSERT INTO "User" (userid,firstname,surname,email) 
VALUES ($1,$2,$3,$4) 
$$ 
LANGUAGE SQL; 

回答

1

嘗試這個東西

CREATE or replace FUNCTION delhi(nam varchar, mm numeric , nn numeric ) RETURNS integer 
    AS $$ 
     begin 
     insert into exe (name , m1 ,m2) values (nam, mm , nn); 
-- see here column name is not like function argument name , so that it wont say error 
      return 1; 
    end ; 
    $$ 
    LANGUAGE plpgsql; 

函數調用:

select delhi ('first value', 2,3) ; 
+0

好吧,似乎工作。但不知道爲什麼?我所看到的與實質不同的是,您在插入語句中排除了顯式列名。可以不使用顯式列名嗎? – Peter 2010-03-19 04:57:25

+0

以及它是如何工作的,你沒有用引號括住表名「?當我嘗試插入到用戶PGAdmin抱怨,我需要說插入到」用戶「 – Peter 2010-03-19 04:59:02

+0

看到,你可以給列名稱明確,但不應該是 函數參數名如果你有函數參數名稱作爲列名,它被解釋爲$ 1,$ 2 – Pavunkumar 2010-03-19 05:08:05

1

您在申報面積使用前必須聲明它。例如:

DECLARE 
    v_UserID alias for $1; 
    v_FirstName alias for $2; 
    v_Surname alias for $3; 
    v_Email alias for $4; 
BEGIN 
$$ 
END