Всем привет,
подскажите ответ на след вопрос
сделал функцию
-----
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;