2010-03-19 239 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