Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FUNCTION numinstr (
p_source IN VARCHAR2,
p_token IN VARCHAR2
) RETURN PLS_INTEGER IS
v_occurrence PLS_INTEGER := 1;
v_start PLS_INTEGER := 1;
v_loc PLS_INTEGER;
BEGIN
v_loc := instr(p_source, p_token, 1, 1);
WHILE v_loc > 0 LOOP
v_occurrence := v_occurrence + 1;
v_start := v_loc + 1;
v_loc := instr(p_source, p_token, v_start, 1);
END LOOP;
RETURN v_occurrence - 1;
END numinstr;
FUNCTION get_split_field (
p_source IN VARCHAR2,
p_delim IN VARCHAR2,
nth PLS_INTEGER
) RETURN VARCHAR2 IS
v_num_delims PLS_INTEGER;
first_pos PLS_INTEGER;
final_pos PLS_INTEGER;
len_delim PLS_INTEGER := length(p_delim);
ret_len PLS_INTEGER;
BEGIN
v_num_delims := numinstr(p_source, p_delim);
IF nth < 1 OR nth > v_num_delims + 1 THEN
RETURN NULL;
ELSE
IF nth = 1 THEN
first_pos := 1;
ELSE
first_pos := instr(p_source, p_delim, 1, nth - 1) + len_delim;
END IF;
END get_split_field;
PROCEDURE p_ins_cliente (
p_rut_cliente IN datos_cliente.rut_cliente%TYPE,
p_nombre_cliente IN datos_cliente.nombre_cliente%TYPE,
p_apellido_cliente IN datos_cliente.apellido_cliente%TYPE,
p_direccion_cliente IN datos_cliente.direccion_cliente%TYPE,
p_numero_telefono_cliente IN datos_cliente.numero_telefono_cliente%TYPE,
p_usuario IN datos_cliente.usuario_creador%TYPE,
p_out_msg OUT VARCHAR2
) IS
ln_id_cliente NUMBER := 0;
BEGIN
p_out_msg := 'OK';
SELECT
nvl(MAX(j.id_cliente), 0) + 1
INTO ln_id_cliente
FROM
datos_cliente j;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
p_out_msg := 'Error Tecnico: '
|| dbms_utility.format_error_stack
|| ' - '
|| dbms_utility.format_error_backtrace;
END p_ins_cliente;
PROCEDURE p_ins_productos (
p_cod_producto IN datos_productos.cod_producto%TYPE,
p_nom_producto IN datos_productos.nom_producto%TYPE,
p_precio_producto IN datos_productos.precio_producto%TYPE,
p_moneda_producto IN datos_productos.moneda_producto%TYPE,
p_usuario IN datos_productos.usuario_creador%TYPE,
p_out_msg OUT VARCHAR2
) IS
BEGIN
p_out_msg := 'OK';
INSERT INTO datos_productos VALUES (
p_cod_producto,
p_nom_producto,
p_precio_producto,
p_moneda_producto,
sysdate,
p_usuario
);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
p_out_msg := 'Error Tecnico: '
|| dbms_utility.format_error_stack
|| ' - '
|| dbms_utility.format_error_backtrace;
END p_ins_productos;
PROCEDURE p_ins_venta (
p_id_cliente IN datos_venta_cab.id_cliente%TYPE,
p_estado_venta IN datos_venta_cab.estado_venta%TYPE,
p_monto_total IN datos_venta_cab.monto_total%TYPE,
p_porc_decuento IN datos_venta_cab.porc_decuento%TYPE,
p_r_detalle_productos IN t_datos_productos,
p_usuario IN datos_productos.usuario_creador%TYPE,
p_out_msg OUT VARCHAR2
) IS
ln_id_venta NUMBER := 0;
ln_id_venta_det NUMBER := 0;
BEGIN
p_out_msg := 'OK';
SELECT
nvl(MAX(j.id_venta), 0) + 1
INTO ln_id_venta
FROM
datos_venta_cab j;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
p_out_msg := 'Error Tecnico: '
|| dbms_utility.format_error_stack
|| ' - '
|| dbms_utility.format_error_backtrace;
END p_ins_venta;
PROCEDURE p_upd_cliente (
p_id_cliente IN datos_cliente.id_cliente%TYPE,
p_rut_cliente IN datos_cliente.rut_cliente%TYPE,
p_nombre_cliente IN datos_cliente.nombre_cliente%TYPE,
p_apellido_cliente IN datos_cliente.apellido_cliente%TYPE,
p_direccion_cliente IN datos_cliente.direccion_cliente%TYPE,
p_numero_telefono_cliente IN datos_cliente.numero_telefono_cliente%TYPE,
p_usuario IN datos_cliente.usuario_creador%TYPE,
p_out_msg OUT VARCHAR2
) IS
BEGIN
UPDATE datos_cliente a
SET
a.rut_cliente = p_rut_cliente,
a.nombre_cliente = p_nombre_cliente,
a.apellido_cliente = p_apellido_cliente,
a.direccion_cliente = p_direccion_cliente,
a.numero_telefono_cliente = p_numero_telefono_cliente
WHERE
a.id_cliente = p_id_cliente;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
p_out_msg := 'Error Tecnico: '
|| dbms_utility.format_error_stack
|| ' - '
|| dbms_utility.format_error_backtrace;
END p_upd_cliente;
begin
end p_upd_productos;
END pack_datos_ventas;