Ayuda con procedure

Andrea
05 de Diciembre del 2005
Hola a todos, una ayudita porfa quiero hacer un procedimiento, que reciba como parametros un numero de columna (posicion, y un criterio) y segun eso me devuelva el select
a continuacion esta el procedure, a parentemente no tiene problemas pero cuando lo pruebo
en el sqlplus
begin scott.SP_VENTAS_AY_MCLIENTE('0','');
end;
me sale el siguiente mensaje :
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "SCOTT.SP_VENTAS_AY_MCLIENTE", line 7
ORA-06512: at line 1 , cual es el problema,

gracias de antemano.
Andrea


CREATE OR REPLACE PROCEDURE SP_VENTAS_AY_MCLIENTE (columna NUMBER, criterio varchar2)
IS
l_cc_cliente char(11);
l_cd_razon_social varchar2(60);
BEGIN
SELECT A.CC_CLIENTE,
A.CD_RAZON_SOCIAL
INTO l_cc_cliente,l_cd_razon_social
FROM MCLIENTE A WHERE A.CB_ACTIVO='1' AND
(columna=1 AND A.CC_CLIENTE LIKE criterio) OR
(columna=2 AND nvl(A.CD_RAZON_SOCIAL,'') LIKE criterio) OR
(columna=0)
order by 1;
END;

Jor-El
05 de Diciembre del 2005
Hola Andrea.

Deberías leer con un poquito mas de atención los mensajes de error que te salen.

Estás haciendo un SELECT..... INTO y esa select te devuelve mas de una fila.

Como un consejillo de ná, evita en la medida de lo posible este tipo de sentencias, utiliza cursores.

Saludos

Andrea
05 de Diciembre del 2005
Tienes razon, lo que pasa es que soy nueva en oracle, y me confundo un poco, ahora es necesario hacer un cursor, yo solo quiero hacer un procedure con un select pasandole dos parametros, un numero de columna y un criterio, en sql server esto se hacia con un simple select , pero ahora en oracle yo utilizaba cursores cuando hacia operaciones, para para mostrar una simple lista segun una condiciones
umm, orientame porfavor
gracias