2014-09-04 2 views
0

테이블에 행을 삽입 한 다음 할당 된 ID를 반환하는 프로 시저를 작성하려고합니다.변수를 열로 반환하는 PostgreSQL/PLPGSQL 프로 시저

표 예 :

CREATE TABLE sometable (
UUID Id, 
varchar field1, 
varchar field2) 

내 기능 :

CREATE OR REPLACE FUNCTION insert_sometable(varchar pfield1, varchar pfield2) 
    RETURNS UUID AS $$ 
DECLARE 
pid UUID; 
BEGIN 
pid=uuid_generate(); 
insert into sometable(id, field1, field2) values (pid, pfield1, pfield2); 
return pid; 
END; 
$$ 
LANGUAGE plpgsql; 

그리고 나는 그것을 그런 식으로 그것을 사용하려면 :

select pid from insert_sometable('_field1_value', '_field2_value') 

을하지만 지금은 더 열 이름을 얻지 그 결과, 그래서 내 ESB 서비스에서 액세스 할 수 없습니다. 결과 집합에 "pid"라는 열이 필요합니다. 쉬운 작업처럼 보이지만 간단한 솔루션을 찾지 못했습니다. 어떤 제안?

답변

0

당신은 반환 값이 원자 인 함수 (안 행)을 사용하지 않아야합니다 :

select pid 
from insert_sometable('_field1_value', '_field2_value') AS inserted_row(pid); 

PostgreSQL은 하나의 열을 반환하는 함수이 속기를 작성하도록 허용 :이 경우 FROM 절에 있습니다 (가능하지만 쿼리를 읽기 어렵게 만듭니다). 별칭을 SELECT 절에 추가 할 수도 있습니다.

select insert_sometable('_field1_value', '_field2_value') as pid; 
+0

감사합니다. pozs. 너 너무 빨라. – CaptainFreedom

1

반환 된 열 이름의 별명을 지정하려고합니다.

select pid 
from insert_sometable('_field1_value', '_field2_value') pid; 
관련 문제