Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

pl/sql

Estas en el tema de pl/sql en el foro de Oracle en Foros del Web. Buenos dias, tengo la siguiente duda y no se porque me sale el error -1422 al hacer un select... into variable.... Pongo el codigo... Código: ...
  #1 (permalink)  
Antiguo 27/05/2010, 03:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 32
Antigüedad: 14 años, 5 meses
Puntos: 1
pl/sql

Buenos dias, tengo la siguiente duda y no se porque me sale el error -1422 al hacer un select... into variable....

Pongo el codigo...

Código:
 (CODIGO VARCHAR2,RAZON_SOCIAL VARCHAR2,TLF VARCHAR2,DIRECCION VARCHAR2,ALB_FACT VARCHAR2,COD_POS VARCHAR2, COD_IVA VARCHAR2, FORMA_PAGO VARCHAR2)
AS

  NONULO EXCEPTION;
  SINO EXCEPTION;
  TABLA VARCHAR2(20);
  FORMA FORMAS_PAGO.CODIGO%TYPE;
  IVA IVAS.COD_IVA%TYPE;
  CONTROL NUMBER;

BEGIN

  IF CODIGO IS NULL THEN
    TABLA:='CODIGO';
    RAISE NONULO;
  ELSIF RAZON_SOCIAL IS NULL THEN
      TABLA:='RAZON SOCIAL';
      RAISE NONULO;
    ELSIF DIRECCION IS NULL THEN
        TABLA:='DIRECCION';
        RAISE NONULO;
      ELSIF COD_IVA IS NULL THEN
          TABLA:='IVA';
          RAISE NONULO;
        ELSIF ALB_FACT IS NULL THEN
            TABLA:='ALBARAN FACTURA';
            RAISE NONULO;
          ELSIF FORMA_PAGO IS NULL THEN
              TABLA:='FORMA DE PAGO';
              RAISE NONULO;
        END IF;
  IF ALB_FACT!='S' AND ALB_FACT!='N' THEN
    RAISE SINO;
  END IF;
  CONTROL:=0;
  SELECT CODIGO INTO FORMA
  FROM FORMAS_PAGO
  WHERE CODIGO=FORMA_PAGO;
  CONTROL:=1;
  SELECT COD_IVA INTO IVA
  FROM IVAS
  WHERE COD_IVA=COD_IVA;

EXCEPTION

  WHEN NONULO THEN
    RAISE_APPLICATION_ERROR(-20001,'EL CAMPO '||TABLA||' ESTA VACIO');

  WHEN SINO THEN
    RAISE_APPLICATION_ERROR(-20001,'EL ALBARAN FACTURA DEBER SER S O N');
  WHEN NO_DATA_FOUND THEN
    IF CONTROL=0 THEN
      RAISE_APPLICATION_ERROR(-20001,'LA FORMA DE PAGO NO EXISTE');
    ELSE
      RAISE_APPLICATION_ERROR(-20001,'EL IVA NO EXISTE');
    END IF;
  WHEN DUP_VAL_ON_INDEX THEN
    RAISE_APPLICATION_ERROR(-20001,'EL CODIGO INTRODUCIDO YA EXISTE');
  WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20002,SQLCODE||'--->'||SQLERRM);

END INSERTARPROVEEDOR;
El error me da en la select de formas de pago al procedimiento le paso el parametro 1 en forma_pago

ejemplo: EXECUTE INSERTARPROVEEDOR(1,'AAS',NULL,'ASADA','S',NULL,'A S',1);

me sale el error -1422 me ha dejado un poco anonadado ya que el campo codigo de formas_pago es primary key..

Un saludo y gracias de antemano. ;)
  #2 (permalink)  
Antiguo 27/05/2010, 09:12
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: pl/sql

Hola que tal,

Podrias poner la estructura de FORMAS_PAGO. La tabla fue creada con el constraint al mismo tiempo? recuerda que el estado de un constraint podria ser disable (validate, no validate) enable (validate, novalidate) . Otra cosa, chequeaste que no existan registros repetidos? te lo digo por el estado del constraint que puede tener tu tabla. Seria bueno verificar el PK, en la vista DBA_CONSTRAINTS puedes hacerlo, revisa los campos status y validated.

Examinemos esto primero.

Saludos y cualquier duda la comentas.
  #3 (permalink)  
Antiguo 27/05/2010, 09:23
 
Fecha de Ingreso: noviembre-2009
Mensajes: 32
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: pl/sql

Gracias por la respuesta,

Despues de darle muchas vueltas al codigo y googlear bastante, encontre el error
estaba en el execute que el parametro de formas de pago lo ponia sin comillas.. :S

No lo entiendo pero.. ya funciona, Gracias por la respuesta

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:42.