В Oracle PL / SQL системная переменная для хранения количества удаленных / вставленных / обновленных строк:
После оператора DELETE / INSERT / UPDATE и ПЕРЕД УСТАНОВКОЙ вы можете сохранитьSQL% ROWCOUNT в переменной типа NUMBER.Помните, что COMMIT или ROLLBACK сбрасывают в ноль значение SQL% ROWCOUNT, поэтому необходимо скопировать значение SQL% ROWCOUNT в переменную BEFORE COMMIT или ROLLBACK.
4/7/07, Картикеян Сундарам написал:
Привет,
I am using 8.1.0 postgres and trying to write a plpgsql block. In that I am inserting a row. I want to check to see if the row has been
вставлено или нет.
В oracle мы можем сказать вот так
begin
insert into table_a values (1);
if sql%rowcount > 0
then
dbms.output.put_line('rows inserted');
else
dbms.output.put_line('rows not inserted');
end if; end;
Есть ли что-то, равное sql% rowcount в postgres?Пожалуйста, помогите.
С уважением skarthi
Может быть:
http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW
Нажмите на ссылку выше, вы увидите это содержание:
37.6.6.Получение статуса результата Есть несколько способов определить эффект команды.Первый способ заключается в использовании команды GET DIAGNOSTICS, которая имеет вид:
GET DIAGNOSTICS variable = item [, ...]; Эта команда позволяет получить индикаторы состояния системы.Каждый элемент - это ключевое слово, идентифицирующее значение состояния, которое должно быть назначено указанной переменной (который должен иметь правильный тип данных для его получения).В настоящее время доступны следующие элементы состояния: ROW_COUNT, число строк, обработанных последней командой SQL, отправленной в механизм SQL, и RESULT_OID, OID последней строки, вставленной самой последней командой SQL.Обратите внимание, что RESULT_OID полезен только после команды INSERT в таблицу, содержащую OID.
Пример:
GET DIAGNOSTICS integer_var = ROW_COUNT;Второй метод определения эффектов команды - это проверка специальной переменной с именем FOUND, которая имеет тип boolean.FOUND начинает false в каждом вызове функции PL / pgSQL.Он устанавливается каждым из следующих типов операторов:
Оператор SELECT INTO устанавливает FOUND true, если назначена строка, и false, если строка не возвращается.
Оператор PERFORM устанавливает FOUND true, если он создает (и отбрасывает) строку, и false, если строка не создается.
Операторы UPDATE, INSERT и DELETE устанавливают FOUND true, если затронута хотя бы одна строка, и false, если строка не затрагивается.
Оператор FETCH устанавливает FOUND true, если возвращает строку, и false, если строка не возвращается.
Оператор FOR устанавливает FOUND в значение true, если оно повторяется один или несколько раз, в противном случае - значение false.Это относится ко всем трем вариантам оператора FOR (целочисленные циклы FOR, циклы FOR с множеством записей и циклы FOR с динамическими наборами записей).FOUND устанавливается таким образом при выходе из цикла FOR;внутри выполнения цикла FOUND не изменяется оператором FOR, хотя он может быть изменен выполнением других операторов в теле цикла.
FOUND - локальная переменная в каждой функции PL / pgSQL;любые изменения в ней влияют только на текущую функцию.