2012-05-14 27 views
11

Tôi đang cố gắng tìm nạp các giá trị từ hàm plpgsql với 2 tham số OUT nhưng tôi có một số vấn đề.plpgsql: gọi hàm có 2 tham số OUT

Đây là những chức năng:

CREATE OR REPLACE FUNCTION get_test(OUT x text, OUT y text) 
AS $$ 
BEGIN 
    x := 1; 
    y := 2; 
END; 
$$ LANGUAGE plpgsql; 
---------------------------------------------------------------- 

CREATE OR REPLACE FUNCTION get_test_read() 
RETURNS VOID AS $$ 
DECLARE 
    xx text; 
    yy text; 
BEGIN 

    SELECT get_test() INTO xx, yy; 

    RAISE INFO 'x: <%>', xx; 
    RAISE INFO 'y: <%>', yy; 

END; 
$$ LANGUAGE plpgsql; 

Đầu ra của lệnh:

chọn get_test_read();

INFO: x: < (1,2)

INFO: y: <>

get_test_read


Vì vậy, cả hai giá trị đi đến các tham số đầu tiên. Tôi không thể tìm thấy một số ví dụ về cách gọi một hàm như thế này.

Trả lời

23

Khi bạn có 2 OUT thông số, hàm của bạn sẽ trả lại record.

Để có được tất cả các giá trị mà bạn nên sử dụng chức năng là nguồn gốc của dữ liệu của bạn và đặt nó vào mệnh đề FROM như thế này:

SELECT * FROM get_test() INTO xx, yy; 
+0

Ok, khá dễ dàng, nhờ :) – marco

+0

Xin lỗi, tôi quên chấp nhận câu trả lời – marco

Các vấn đề liên quan