En Oracle PL/SQL, la variable de sistema para almacenar el número de filas eliminadas/insertadas/actualizados es:
Después de una instrucción DELETE/INSERT/UPDATE y antes de comprometerse, puede almacenar% ROWCOUNT de SQL en una variable de tipo NUMBER. Recuerde que COMMIT o ROLLBACK restablecen a cero el valor de SQL% ROWCOUNT, por lo que debe copiar el valor de SQL% ROWCOUNT en una variable ANTES de COMMIT o ROLLBACK.
En 07/04/07, Karthikeyan Sundaram escribió:
Hola,
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
insertado o no.
en Oracle podemos decir como esto
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;
¿Hay algo igual a sql% del recuento de filas en Postgres? Por favor ayuda.
Saludos skarthi
Tal vez:
http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW
Haga clic en el enlace de arriba, verá este contenido:
37.6.6. Obtención del estado del resultado Hay varias formas de determinar el efecto de un comando. El primer método es utilizar el comando GET DIAGNOSTICS, que tiene la forma:
obtener la variable DIAGNOSTICS = item [, ...]; Este comando permite recuperación de los indicadores de estado del sistema. Cada elemento es una palabra clave que identifica un valor de estado que se asignará a la variable especificada (que debe ser del tipo de datos correcto para recibirla).Los actualmente elementos de estado disponibles son ROW_COUNT, el número de filas procesadas por el último comando SQL enviado al motor SQL y RESULT_OID, OID de la última fila insertada por el comando SQL más reciente. Tenga en cuenta que RESULT_OID solo es útil después de un comando INSERT en una tabla que contiene OID.
Un ejemplo:
GET DIAGNOSTICS integer_var = ROW_COUNT; El segundo método para determinar los efectos de un comando es comprobar la variable especial llamada FOUND, que es de tipo booleano. FOUND comienza falso dentro de cada llamada de función PL/pgSQL. Se establece por cada uno de los siguientes tipos de instrucciones:
Una instrucción SELECT INTO establece FOUND verdadero si se asigna una fila, falso si no se devuelve ninguna fila.
Una instrucción PERFORM establece FOUND verdadero si produce (y descarta) una fila , falso si no se produce ninguna fila.
Las sentencias UPDATE, INSERT y DELETE establecen FOUND verdadero si se ve afectado al menos una fila , falso si no se ve ninguna fila.
Un enunciado FETCH establece FOUND verdadero si devuelve una fila, falso si no se devuelve la fila .
Una declaración FOR establece que se encuentre verdadero si itera una o más veces, de lo contrario es falso. Esto se aplica a las tres variantes de la instrucción FOR (bucles enteros FOR, bucles FOR configurados en registros y bucles dinámicos FOR- ). FOUND se establece de esta manera cuando el ciclo FOR sale; dentro de la ejecución del bucle, FOUND no se modifica mediante la instrucción FOR, aunque puede modificarse mediante la ejecución de otras instrucciones dentro del cuerpo del bucle .
FOUND es una variable local dentro de cada función PL/pgSQL; cualquier cambio afecta solo a la función actual.
Sí, ROW_COUNT es lo que necesita. –
impresionante, gracias! –
Citar el manual no es del todo útil. Los enlaces están bien. Pero vengo a stackoverflow para ver ejemplos. – Neil