powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выходные параметры функции
8 сообщений из 8, страница 1 из 1
выходные параметры функции
    #35511526
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите возможно ли вернуть из одной функции результат работы оператора SELECT и отдельные выходные параметры. Т.е. есть желание получить результирующий набор данных, и
текстовое сообщение в выходном параметре.
...
Рейтинг: 0 / 0
выходные параметры функции
    #35512439
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял, что никак.
...
Рейтинг: 0 / 0
выходные параметры функции
    #35512734
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolaich2Я так понял, что никак.
Не понятно, что вы хотите.
Если 2 набора данных, то копайте в документации в сторону курсоров (конкретно, возврат нескольких курсоров). Если отдельный отладочный поток, то RAISE.
...
Рейтинг: 0 / 0
выходные параметры функции
    #35512746
chAlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select fld1, fld2 from table into res.param1, res.param2;
res.param3 = 'OK';
return res;
Можно ещё отдельный тип под res создать и возвращать из функции его.
...
Рейтинг: 0 / 0
выходные параметры функции
    #35512918
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin Pahan nikolaich2Я так понял, что никак.
Не понятно, что вы хотите.
Если 2 набора данных, то копайте в документации в сторону курсоров (конкретно, возврат нескольких курсоров). Если отдельный отладочный поток, то RAISE.

Возможно это прояснит ситуацию.
Первая функци возращает набор данных:
Код: plaintext
1.
2.
3.
4.
5.
CREATE OR REPLACE FUNCTION ShowUnitOfMeasure() RETURNS SETOF UnitOfMeasure AS 
	$$
	SELECT UnitOfMeasureID, UnitOfMeasureName
	FROM UnitOfMeasure 
	$$ 
LANGUAGE SQL;

Вторая вставляет запись в таблицу и если возникли ошибки то возращает код и текст ошибки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE OR REPLACE FUNCTION InsUnitOfMeasure (InUnitOfMeasureName varchar( 50 ),
         OUT textError text, OUT codeError int) RETURNS record AS $$ 

	BEGIN
		IF ($ 1  ISNULL) THEN
			RAISE EXCEPTION 'Отсутствует входное значение!';		
		END IF;
		INSERT INTO UnitOfMeasure (UnitOfMeasureName)
		VALUES ($ 1 );
		codeError =  0 ;

	EXCEPTION
		WHEN OTHERS THEN
			IF sqlstate = 'P0001' THEN
				textError := sqlerrm ;
				codeError :=  1 ;
			ELSE 
				textError := sqlerrm || '  ' || sqlstate;
				codeError :=  2 ;			
			END IF;			
	END;
$$ LANGUAGE plpgsql;

Т.е. я хочу, чтобы в перевой функции можно было добавить выходные параметры, как это сделано во второй функции.
...
Рейтинг: 0 / 0
выходные параметры функции
    #35512981
chAlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolaich2Т.е. я хочу, чтобы в перевой функции можно было добавить выходные параметры, как это сделано во второй функции.
Про это я и писал, остаётся добавить тип и вперёд:
Код: plaintext
1.
2.
3.
... RETURNS my_res_type AS
'declare res my_res_type%rowtype;
...
' LANGUAGE 'plpgsql'
Только непонятно, как функция, возвращающая набор (SETOF) данных, должна выдавать ещё и "статичный" результат. В каждой возвращаемой записи что ли?
...
Рейтинг: 0 / 0
выходные параметры функции
    #35513029
nikolaich2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chAlx
Только непонятно, как функция, возвращающая набор (SETOF) данных, должна выдавать ещё и "статичный" результат. В каждой возвращаемой записи что ли?

В этом и смысл вопроса.
Извите если вопрос глупый, но я сейчас пытаюсь перейти с MS SQL на PostgreSQL, а в MS SQL такой вариант проходил. Т.е. возращаешь набор данных, и какой-либо код через оператор Return.
Что то типа этого:
Код: plaintext
1.
2.
3.
4.
5.
CREATE PROC ShowObject 
AS
SELECT ObjectID, ObjectName 
FROM Object
RETURN( 0 )
GO
В этом случае на клиенте можно получить набор данных и значение, которое возвращется в операторе RETURN. В данной процедуре 0.
...
Рейтинг: 0 / 0
выходные параметры функции
    #35513230
chAlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolaich2возращаешь набор данных, и какой-либо код через оператор Return
Не встречал такого: return на то и сделан, чтобы возвращать результат.

Ну если надо в набор данных его засунуть -- можно и туда. Хоть в каждую запись, хоть в первую, хоть в отдельную.. Тип этой записи всё равно придётся прописать, т.к. он уже не будет "равен" имеющейся таблице.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / выходные параметры функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]