Количество записей

Всем привет,
подскажите ответ на след вопрос

сделал функцию

-----

CREATE OR REPLACE FUNCTION dbo."pUserExit"(
"pUSERID" character varying DEFAULT ''::character varying)
RETURNS void AS
$BODY$

BEGIN

IF dbo."fnUserGetStatus"("pUSERID") NOT IN (2,3) THEN
DELETE FROM dbo."RoomSess"
WHERE "UserID"="pUSERID";
ELSE
UPDATE dbo."RoomSess" SET "isLock" = NULL
WHERE "UserID"="pUSERID";
END IF;
RETURN;

END

$BODY$
LANGUAGE plpgsql

-----

Подскажите как ее запустить чтоб возвращало количество измененных/удаленных строк
Если через SELECT dbo."pUserExitFromRoom"('3') выводит пустую колонку
Видел в статьях упоминание о PERFORM, но не понял как использовать команду

Функцию запускаю в приложении (на с# с использованием Npgsql) через ExecuteNonQuery();
Необходимо получить количество измененных записей. Как правильно задать команду вызова функции "pUserExitFromRoom"?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Пользовательские функции

Пользовательские функции запускаются точно также как и основные. Т.е. запускаете вы правильно, а если выводит пустую колонку, то разбирайтесь с тем, что данная функция возвращает.

с самой функцией все нормально

с самой функцией все нормально
вопрос в другом
как запустить функцию чтоб возвращались не колонки, а количество измененных записей
как если бы я просто в окне запустил, например UPDATE dbo."Test" SET "Comment=' ' (где в таблице к примеру 5 записей и везде поставился бы пробел)
и как результат отобразилось что изменено 5 записей
если такое возможно?!

конечно можно исхитриться и в самой функцией вернуть это количество записей подсчитав к примеру через GET DIAGNOSTICS integer_var = ROW_COUNT;

но можно ли запустить функцию чтоб выгружались не данные, а именно количество измененных данных

Вы считаете, что с самой

Вы считаете, что с самой функцией всё нормально?
А что за такой странный тип данных она у вас возвращает, не подскажете?

> RETURNS void AS

спрошу по другому

Понял, что меня не поняли) спрошу по другому...
я выполняю обычный запрос UPDATE dbo."Winners" SET "Comment" = ''; (в табличке 2 записи)
после выполнения запроса - выходит сообщение: Query returned successfully: 2 rows affected, 12 msec execution time.
Как мне сделать, чтоб такое сообщение выходило при запуске функции, в которой таким же запросом обновятся записи??

Я бы попробовал начать рыть

Я бы попробовал начать рыть здесь
http://postgresql.ru.net/manual/plpgsql-statements.html#PLPGSQL-STATEMEN...

А по функциям не забывайте, что функция должна ВОЗВРАЩАТЬ значение, а если она возвращает void как у вас, значит она ничего не возвращает и никаких результатов через SELECT вы не получите.

INSERT ... RETURNING

Изображение Игорь

INSERT ... RETURNING expressions INTO [STRICT] target;
UPDATE ... RETURNING expressions INTO [STRICT] target;
DELETE ... RETURNING expressions INTO [STRICT] target;

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023