Error en procedure de ORACLE 8i

Quisiera crear un procedure o function en ORACLE 8i, que me permita grabar una fila en una tabla y si es posible que me devuelva un indicador de resultado del a ejecución.
He conseguido ejecutar un procedure desde VB 6 que borra una fila, pero al intentar compilar un procedure que inserta una fila me da el error descripto debajo. Aquí va el procedure y el resultado de la compilación. Muchas gracias. Saludos.
SQL> CREATE OR REPLACE PROCEDURE sp_InsLiqProdVentas(p_Usuario LiqProdVentas. Usuario%TYPE,
2 p_Cliente LiqProdVentas. Cliente%TYPE,
3 p_TipoOrden LiqProdVentas. TipoOrden%TYPE,
4 p_Articulo LiqProdVentas. Articulo%TYPE,
5 p_FechaFactura CHAR(10),
6 p_CantidadCajas LiqProdVentas. CantidadCajas%TYPE,
7 p_CantidadKilos LiqProdVentas. CantidadKilos%TYPE,
8 p_CantidadEA LiqProdVentas. CantidadEA%TYPE,
9 p_ImporteBruto LiqProdVentas. ImporteBruto%TYPE,
10 p_ImporteDescuento LiqProdVentas. ImporteDescuento%TYPE,
11 p_ImporteNeto LiqProdVentas. ImporteNeto%TYPE) IS
12 BEGIN
13 INSERT INTO LJORGE.LiqProdVentas
14 VALUES(p_Usuario,
15 p_Cliente,
16 p_TipoOrden,
17 p_Articulo,
18 TO_DATE(p_FechaFactura, 'DD/MM/YYYY'),
19 p_CantidadCajas,
20 p_CantidadKilos,
21 p_CantidadEA,
22 p_ImporteBruto,
23 p_ImporteDescuento,
24 p_ImporteNeto);
25 COMMIT;
26 END;
27 .
SQL> /
Warning: Procedure created with compilation errors.
SQL> show errors
Errors for PROCEDURE SP_INSLIQPRODVENTAS:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/21 PLS-00103: Encountered the symbol "(" when expecting one of the
following:
:= ) , default varying character large
The symbol ":=" was substituted for "(" to continue.

1 respuesta

Respuesta
1
En el procedimiento que me has enviado, veo una cosa que está mal.
Al realizar la definición de los parámetros de la función (CREATE OR REPLACE PROCEDURE Nombre_Procedimiento (Parámetro 1 (IN/OUT) con esto especificas si el parámetro es de entrada o de salida o ambos.) Tipo de Datos ( El tipo de Datos puede ser el de un campo de la tabla, o, NUMBER, CHAR, VARCHAR2, etc) pero no es necesario darle una longitud en la definición.
Así tu Programa quedaría.
CREATE OR REPLACE PROCEDURE sp_InsLiqProdVentas(p_Usuario LiqProdVentas. Usuario%TYPE,
p_Cliente LiqProdVentas. Cliente%TYPE,
p_TipoOrden LiqProdVentas. TipoOrden%TYPE,
p_Articulo LiqProdVentas.Articulo%TYPE,
p_FechaFactura CHAR,
p_CantidadCajas LiqProdVentas. CantidadCajas%TYPE,
p_CantidadKilos LiqProdVentas. CantidadKilos%TYPE,
p_CantidadEA LiqProdVentas. CantidadEA%TYPE,
p_ImporteBruto LiqProdVentas. ImporteBruto%TYPE,
p_ImporteDescuento LiqProdVentas. ImporteDescuento%TYPE,
p_ImporteNeto LiqProdVentas.ImporteNeto%TYPE) IS
BEGIN
INSERT INTO LJORGE. LiqProdVentas
VALUES(p_Usuario,
p_Cliente,
p_TipoOrden,
p_Articulo,
TO_DATE(p_FechaFactura, 'DD/MM/YYYY'),
p_CantidadCajas,
p_CantidadKilos,
p_CantidadEA,
p_ImporteBruto,
p_ImporteDescuento,
p_ImporteNeto);
COMMIT;
END;
/
Creo que con eso te bastará.
Ya me contaras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas