Ver Mensaje Individual
  #22 (permalink)  
Antiguo 11/02/2010, 12:18
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: O.o que pasa aqui ?

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 original
  1. PROCEDURE pa_insertaproducto(parametros , param_salida IN OUT t_cursor_salida)
  2. IS
  3.     contarProdServ INTEGER;
  4.   BEGIN
  5.     SELECT COUNT(*)
  6.       INTO contarProdServ
  7.  
  8.       FROM tabla
  9.      WHERE cod_comercio = param_cod_comercio
  10.        AND sku_producto = param_sku_producto;
  11.     IF (contarProdServ = 0) THEN
  12.       INSERT INTO tabla
  13.         campos
  14.       VALUES
  15.         parametros
  16.       OPEN param_salida FOR
  17.         SELECT 1 FROM dual;
  18.    
  19.     ELSE
  20.       UPDATE tabla
  21.          SET campos = parametros
  22.        WHERE cod_comercio = param_cod_comercio
  23.          AND sku_producto = param_sku_producto;
  24.    
  25.       OPEN param_salida FOR
  26.         SELECT 2 FROM dual;
  27.     END IF;
  28.  
  29.   EXCEPTION
  30.     WHEN OTHERS THEN
  31.       ROLLBACK;
  32.       OPEN param_salida FOR
  33.         SELECT -1 FROM dual;
  34.   END;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)