Archivo de etiquetas de 'pl/sql'

ORA-01422: Exact fetch returns more than requested number of rows

En PL SQL, el error ORA-01422: Exact fetch returns more than requested number of rows se produce cuando se tiene una consulta SELECT - INTO que devuelve más de una fila.
Por ejemplo:
PLAIN TEXT
PLSQL:

DECLARE

n_orderid   NUMBER;

BEGIN

SELECT o.orderId

INTO n_orderid

FROM t_ordenes o

WHERE o.status = 'a'

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.put_line('Error '||SQLERRM);

END;

Si es que la se tienen varias filas que cumplan la [...]

Libros recomendados

Hace unos días me llegaron algunos libros que compré en Amazon y voy a recomendarles un par de ellos. Ambos son de categorías diferentes, pero vienen muy bien para quien esté interesado en los temas que abordan.
GIMP 2 for Photographers: Hace poco me he aficionado a la fotografía así que compré este libro para [...]

Cursores con parámetros en PL SQL

En una anterior entrada mostraba cómo manejar cursores en PL SQL, ahora veremos cómo manejar cursores con parámetros.
Los cursores con parámetros son útiles cuando queremos restringir los resultados de la consulta, también son prácticos porque los declararemos como variables (no es necesario reescribir el código) y si no es necesario utilizar todas las columnas devueltas [...]

Cursores en PL SQL (1)

Los cursores son estructuras que se pueden utilizar cuando queremos almacenar los resultados de un SELECT que devuelve varias filas.
Son sencillos de implementar pero tienen algunas desventajas: si agregamos posteriormente columnas al SELECT, tendremos que agregarlas en cada lugar en donde hagamos un FETCH del cursor (lo que complica las cosas cuando se tienen [...]

Escribir archivo en PL SQL

Con PL SQL podemos crear archivos en el servidor de esta forma:
PLAIN TEXT
PLSQL:

DECLARE

   wv_filename VARCHAR2(1000);

   wv_unixpath VARCHAR2(1000);

   wf_output   UTL_FILE.FILE_TYPE;

BEGIN

   wv_filename       := 'prueba.txt';

   wv_unixpath      := '/directorio/de/escritura';

   //Abre (o crea) el archivo para escritura

   wf_output        := UTL_FILE.fopen (wv_unixpath,wv_filename,'w');

   //Excribe un par de líneas

   UTL_FILE.put_line (wf_output,'línea de prueba');

   UTL_FILE.put_line (wf_output,'otra línea [...]

IF IF IF IF IF

Cuando encuentro estas cosas me pongo a renegar (caso real que encontré entre el código en el trabajo):

No porque sea un talibán, sino porque me parece que dificulta la lectura del código.
Algo de lógica básica no vendría mal a algunos programadores, recuerden:
PLAIN TEXT
PLSQL:

IF a THEN

   IF b THEN

       IF c THEN

      [...]