powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Количество измененных записей из функции
10 сообщений из 10, страница 1 из 1
Количество измененных записей из функции
    #39180590
VIK2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет,
подскажите ответ на след вопрос

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

-----

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"?
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39180623
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDNSqlCommand.ExecuteNonQuery Method ()

Return Value
Type: System.Int32

The number of rows affected.
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39180643
VIK2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

я знаю что данная процедура возвращает количество измененных/удаленных записей
вопрос в то как правильно указать вызов функции

при простом указании ф-ии в запросе выдается ошибка (42601), например
NpgsqlCommand command = new NpgsqlCommand("dbo.\"pTest\"()", connection);
int k = command.ExecuteNonQuery();

при простом указании через SELECT функция выполняется НО количество обработтаных записей -1
NpgsqlCommand command = new NpgsqlCommand("SELECT dbo.\"pTest\"()", connection);
int k = command.ExecuteNonQuery();

Даже если во внимание не брать код C# в приложении,
а просто запустить функцию в SQL эдиторе в самом Postgre

Как запустить функцию, чтоб возвратилось количество обработанных записей?
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39180663
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIK2016,

База называется PostgreSQL, можно сократить до Postgres (“s” в конце обязательна). Так говорит сам проект .

Вы определили свою функцию как `RETURNS void`, очевидно, что такая функция ничего вернуть не может.

Чтобы вернуть число, измените определение на `RETURNS integer` и в теле функции возвращайте число .
Чтобы получить кол-во записей, которые обработала предыдущая команда, используйте `GET DIAGNOSTICS` .
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39180678
VIK2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov,

насчет того, что можно подсчитать количество записей в самой функции и вывести результат - как вариант
но возможно ли (И ЕСЛИ ДА, ТО КАК?) выводить не данные, а именно количество измененных данных в функции

как если бы я просто в окне запустил, например UPDATE dbo."Test" SET "Comment=' ' (где в таблице к примеру 5 записей и везде поставился бы пробел)
и как результат отобразилось что изменено 5 записей
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39180750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIK2016,
а вы не нагружайте сервер и не выводите чепуху (утрирую) про то что он делает.
Если в хранимке или SQL сервер не сделал что от него просили (вообще), то выводите райзе на самый верх стека.
Если сделано, то либо молчите, либо напишите Выполнено\ОК\.....
IMHO
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39180755
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIK2016насчет того, что можно подсчитать количество записей в самой функции и вывести результат - как вариант
но возможно ли (И ЕСЛИ ДА, ТО КАК?) выводить не данные, а именно количество измененных данных в функции

Статус выполнения команды
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39187324
VIK2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,

спасибо, но про статус выполнения команды я знаю

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

Вы хотите просто что-то выкинуть в лог/на экран? Тогда RAISE .
Если вы хотите вернуть цифру (уже написал же), то измените сигнатуру и возвращайте цифру.
Если вы хотите сформировать произвольное сообщение, то возвращайте его в виде строки (text).
...
Рейтинг: 0 / 0
Количество измененных записей из функции
    #39187413
VIK2016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorov,

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


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