Se me ocurre una nimiedad, pero me pregunto si no será parte del problema...
Lo que me ha sucedido en otros DBMS es que la sentencia SELECT
debe ser la última..., así que yo probaría:
Código SQL:
Ver originalPROCEDURE pa_insertaproducto(parametros , param_salida IN OUT t_cursor_salida)
IS
contarProdServ INTEGER;
BEGIN
SELECT COUNT(*)
INTO contarProdServ
FROM tabla
WHERE cod_comercio = param_cod_comercio
AND sku_producto = param_sku_producto;
IF (contarProdServ = 0) THEN
INSERT INTO tabla
campos
VALUES
parametros
OPEN param_salida FOR
SELECT 1 FROM dual;
ELSE
UPDATE tabla
SET campos = parametros
WHERE cod_comercio = param_cod_comercio
AND sku_producto = param_sku_producto;
OPEN param_salida FOR
SELECT 2 FROM dual;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
OPEN param_salida FOR
SELECT -1 FROM dual;
END;