Как бы я распечатать несколько столбцов из хранимой процедуры в plpgsql - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь напечатать несколько столбцов в хранимой процедуре ... Может кто-нибудь, пожалуйста, предоставьте мне пример, который использует запрос.Спасибо.

К, например, у меня есть база данных фильмов, и я хочу найти процентную долю прибыльных фильмов всех фильмов с 1960 года. У меня есть очереди, которые делают это, и я запустил его на pgADMIN, и он работаетв совершенстве;Однако, когда я пытаюсь создать хранимую процедуру, я знаю, что я должен использовать для создания держателя типа как (год INTEGER, prnct FLOAT).

Итак, теперь мне нужно создать хранимую процедуру, которая бы возвращала два столбца, один из года и один процент, однако как мне сделать, чтобы этот столбец был годом, а следующий столбец был prnct.

1 Ответ

1 голос
/ 10 августа 2011

Если вы хотите вернуть одну строку с несколькими столбцами, вы можете использовать record или some_table в качестве типа.

Если у вас есть таблица типа movie, вы можете создать функциюкак это:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS movie AS

Если вы хотите вернуть какой-то произвольный тип, вам нужно будет сделать что-то вроде этого:В строке, вы должны использовать модификатор SETOF, например:

CREATE OR REPLACE FUNCTION get_profitable_movie() RETURNS SETOF record AS

. Вы можете создать такую ​​функцию:

CREATE OR REPLACE FUNCTION multicolumn_thing() RETURNS record AS $$
DECLARE
    r record;
BEGIN
    SELECT 1, 2, 3 INTO r;
    RETURN r;
END
$$ LANGUAGE 'plpgsql';

и выбрать из нее следующие результаты:*

SELECT
    columns.a,
    columns.b,
    columns.c
FROM multicolumn_thing() AS columns(a int, b int, c int);

С setof это то же самое, но несколько рядов конечно:)

...