Доброго времени суток! Нужно создать процедуру которая возвращает результаты нескольких запросов select.
Вот мои безрезультатные попытки:
declare
_result varchar;
_result2 varchar;
_result3 varchar;
begin
SELECT column1.number
INTO _result
FROM test_tbl
where
column1.number = tr_num;
SELECT column2.number
INTO _result2
FROM test2_tbl
where
column2.number = tr_num;
_result3 = _result||_result2;
RETURN _result3;
end;
а каков результат-то? Ошибки
а каков результат-то? Ошибки или что там не получается?
мне нужно 2 заполненные
мне нужно 2 заполненные колонки с resul1 result2. Мне нужно чтоб в первой и второй колонке были уникальные записи DISTINCT.
А вот что вы делаете: 1.
А вот что вы делаете:
1. Пытаетесь в _result и _result2 поместить не ЗНАЧЕНИЕ, а СПИСОК значений.
2. Пытаетесь в _result3 получить не две колонки, а одно ЗНАЧЕНИЕ, полученное слияением двух других значений.
В документации есть примеры, читайте, например:
http://postgresql.ru.net/manual/plpgsql-declarations.html#PLPGSQL-DECLAR...
CREATE FUNCTION
CREATE FUNCTION merge_fields(t_row table1) RETURNS text AS $$
DECLARE
t2_row table2%ROWTYPE;
BEGIN
SELECT * INTO t2_row FROM table2 WHERE ... ;
RETURN t_row.f1 || t2_row.f3 || t_row.f5 || t2_row.f7;
END;
$$ LANGUAGE plpgsql;
SELECT merge_fields(t.*) FROM table1 t WHERE ... ;
Блин не могу разобраться как свое примастырить к этому. А может результат как то в цикле получать? Если не сложно помогите.
Может сделать жве разные
Может сделать жве разные сохраненые процедуры, а их вызывать друг за дружкой в коде, который пишите, и уже в коде делайте, что хотите. Не понимаю, зачем такой огород городить, если пока опыта недостаточно. Еще вариант есть соединить эти два запроса в процедуре с помощью join (объединеный,составной запирос), и получите ваш результат. Почитайте описание SQL и его спецификации, думаю у Вас многие вопросы отпадут и появятся приличные идеи.