2016-02-04 79 views
0

是否可以從已經在函數中聲明的另一個變量聲明變量?在函數的select語句中使用變量

什麼,我期待下面的例子..

CREATE OR REPLACE FUNCTION insertRecord 
(
    a varchar (100), 
    b varchar(100), 
    c varchar(100) 

) 
RETURNS TEXT AS $$ 

DECLARE 

orgId := (select id from org) 

projectId := select id from project where orgId = orgId 

BEGIN 

return projectId; 

END; 
$$ LANGUAGE plpgsql; 
+1

請顯示該函數的完整代碼。 –

+0

完成 - 我只想知道,如果我可以做orgId = orgId或我必須做哪裏orgId =(從組織中選擇id) –

回答

0

首先聲明的變量。並重命名orgId以避免列名稱含糊不清。

CREATE OR REPLACE FUNCTION insertRecord 
(
a varchar (100), 
b varchar(100), 
c varchar(100) 

) 
RETURNS TEXT AS $$ 

DECLARE 

orgId_var integer; 
projectId varchar; 


BEGIN 

orgId_var := (select id from org limit 1); 

projectId := (select id from project where orgId = orgId_var); 

return projectId; 

END; 
$$ LANGUAGE plpgsql; 
+0

我在整個時間使用相同的名稱..不知道它不工作。 –

0

也許你只是想使用連接而已?沿着這些線(但添加更多的過濾器,以免返回多行):

CREATE OR REPLACE FUNCTION insertRecord(
    a varchar (100), 
    b varchar(100), 
    c varchar(100) 
) 
RETURNS TEXT AS $$ 

DECLARE 

    v_project_id project.id%TYPE; 

BEGIN 

    SELECT p.id 
     INTO v_project_id 
     FROM project p 
     JOIN org o ON (o.id = p.org_id); 

    RETURN v_project_id; 

END; 
$$ LANGUAGE plpgsql; 
相關問題