2009-08-27 2 views
12

값을 전혀 반환하지 않는 간단한 저장 프로 시저를 포스트그레스에 작성하려면 어떻게해야합니까? 저장 프로 시저를 호출 할 때 void 반환 형식을 사용하는 경우에도 단일 행을 다시 가져옵니다.아무 것도 반환하지 않는 Postgres 저장 프로 시저를 작성하려면 어떻게해야합니까?

CREATE FUNCTION somefunc(in_id bigint) RETURNS void AS $$ 
BEGIN 
    DELETE from test_table where id = in_id; 
END; 
$$ LANGUAGE plpgsql; 

답변

7

그것은 당신이 그것을 호출하는 데 사용되는 SELECT의, 값을 반환하는 기능이 아니다. 행을 반환하지 않으면 함수가 실행되지 않습니다.

4

잘하고 있습니다. 다른 것을 추가 할 필요가 없습니다.

행의 결과가 null이므로 void가 반환됩니다.

나는 당신이 그것에 관하여 할 수있는 무언가를 생각하지 않는다. 내 무효 기능을 확인하는 것은 모두 귀하의 것과 같습니다.

은 $$로 void를 반환하고 코드 블록에는 return 문을 반환하지 않습니다.

간단한 기능 : 이제

create function x() returns setof record as $$ 
begin 
return; 
END; 
$$ language plpgsql; 

당신은 할 수 있습니다

는 경우
# select x(); 
x 
--- 
(0 rows) 

작동하지 않습니다 당신은 달성 할 수

+1

하지만 어떻게 할 수 그 방법은? – Peymankh

+0

SELECT * FROM void_function(); –

+0

아마도'PERFORM void_function();'을 사용하는 것이 더 쉽습니다. – Cromax

6

설정을 돌려주는 기능을 남용하여 "아무 것도 반환되지" 당신을 위해 (미안, 나는 8.5를 사용하고있다),이 접근법으로 시도해 보라 :

# create function x (OUT o1 bool, OUT o2 bool) returns setof record as $$ 
begin 
return; 
END; 
$$ language plpgsql; 
CREATE FUNCTION 

매개 변수는 무관하지만, :

  • 당신이 필요로> 그들은

선정 할 필요가

  • 그 중 1 그리고 지금 당신이 할 수 있습니다

    # select * from x(); 
    o1 | o2 
    ----+---- 
    (0 rows) 
    
  • 관련 문제