2011-08-04 2 views
0

(vey condensed) 쿼리에서 어떻게 myfile_key가 RETURNING에서 반환됩니까? (삽입 된 제 필드 myfile_key이다) postgreSQL pl/python 어떻게하면 쿼리에서 RETURNING을 얻을 수 있습니까?

CREATE OR REPLACE FUNCTION myfunction (src int, OUT result int) AS $$ 

plan = plpy.prepare("INSERT INTO myfile VALUES (nextval('seq_myfile'),$1,$2) 
RETURNING myfile_key", ["integer","integer"]) 

$$ LANGUAGE plpythonu; 

코드는 출력 값을 반환하지 않고, 같이 표준 파이썬 결과를 조회 할 수 없었던 :

result = rv[0]["myfile_key"] 

답변

0

코드에 plpy.execute이 없다고 가정합니다. 원칙적으로 RETURNING 열에 액세스하려면 rv[0]["myfile_key"]과 같은 권한이 있습니다. 작동하지 않는 부분은 PL/Python의 OUT 매개 변수에 대한 할당입니다. 정상 return 문을 사용하여 OUT 매개 변수없이 함수를 다시 작성하는 것이 좋습니다.

+0

안녕하세요 피터! 귀하의 의견에 감사드립니다. 예, 표준 반환 문을 사용하려고합니다. 이미 많은 것을 위해 수익을 사용하고 있습니다. 필자는 어떻게 든 SQL 'RETURNS'가이 컨텍스트에서 사용될 수 있다고 가정했습니다. (주의 : 나는 plpy.execute에 대한 호출을 가지고 있으며 가능한 한 간단하게이 스 니펫을 유지하고 있습니다!) – DrLou

+0

...하지만 다른 생각 : OUT 선언 비트를 방지하기 위해 _need_를 사용하지 마십시오. 오류 : 함수 결과 유형을 지정해야합니다. ??? – DrLou

+0

실제로 OUT 파라미터는 PL/Python에서 잘 작동합니다. 그것은 어쨌든 그들을 다루는 언어가 아닙니다. PostgreSQL 9.1이 여러 개의 'OUT'매개 변수를 사용하기 전에 PL/Python에서 작동하지 않는 것은 무엇입니까? 하지만 여기서하는 일이 아닙니다. 그래서 당신은 정말로 더 많은 세부 사항을 제공해야합니다. –