|
|
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
Всем привет, подскажите ответ на след вопрос сделал функцию ----- 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"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2016, 17:26 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
MSDNSqlCommand.ExecuteNonQuery Method () Return Value Type: System.Int32 The number of rows affected. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2016, 19:37 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
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 Как запустить функцию, чтоб возвратилось количество обработанных записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2016, 21:03 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
VIK2016, База называется PostgreSQL, можно сократить до Postgres (“s” в конце обязательна). Так говорит сам проект . Вы определили свою функцию как `RETURNS void`, очевидно, что такая функция ничего вернуть не может. Чтобы вернуть число, измените определение на `RETURNS integer` и в теле функции возвращайте число . Чтобы получить кол-во записей, которые обработала предыдущая команда, используйте `GET DIAGNOSTICS` . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2016, 22:47 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
vyegorov, насчет того, что можно подсчитать количество записей в самой функции и вывести результат - как вариант но возможно ли (И ЕСЛИ ДА, ТО КАК?) выводить не данные, а именно количество измененных данных в функции как если бы я просто в окне запустил, например UPDATE dbo."Test" SET "Comment=' ' (где в таблице к примеру 5 записей и везде поставился бы пробел) и как результат отобразилось что изменено 5 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2016, 23:49 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
VIK2016, а вы не нагружайте сервер и не выводите чепуху (утрирую) про то что он делает. Если в хранимке или SQL сервер не сделал что от него просили (вообще), то выводите райзе на самый верх стека. Если сделано, то либо молчите, либо напишите Выполнено\ОК\..... IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2016, 11:19 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
VIK2016насчет того, что можно подсчитать количество записей в самой функции и вывести результат - как вариант но возможно ли (И ЕСЛИ ДА, ТО КАК?) выводить не данные, а именно количество измененных данных в функции Статус выполнения команды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2016, 11:33 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, спасибо, но про статус выполнения команды я знаю спрошу по другому... я выполняю обычный запрос UPDATE dbo."Winners" SET "Comment" = ''; (в табличке 2 записи) после выполнения запроса - выходит сообщение: Query returned successfully: 2 rows affected, 12 msec execution time. Как мне сделать, чтоб такое сообщение выходило при запуске функции, в которой таким же запросом обновятся записи?? а не итоговая табличка, в которой можно отразить количество измененных записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 21:54 |
|
||
|
Количество измененных записей из функции
|
|||
|---|---|---|---|
|
#18+
VIK2016, Вы хотите просто что-то выкинуть в лог/на экран? Тогда RAISE . Если вы хотите вернуть цифру (уже написал же), то измените сигнатуру и возвращайте цифру. Если вы хотите сформировать произвольное сообщение, то возвращайте его в виде строки (text). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2016, 22:32 |
|
||
|
|

start [/forum/topic.php?fid=53&gotonew=1&tid=1997376]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
209ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 557ms |

| 0 / 0 |
