Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/03/2010, 13:56
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: stored procedure dinamico

Nunca intenté usar una sentencia preptarada en un IF, pero de funcionar lo que debes buscar es un resultado por NULL, ya que en MySQL NOT EXISTS se usa para objetos de base de datos, y no para consultas.

Pruebalo así y veamos
Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `spInsertGenerico`(
  2.   IN in_validador_campo varchar(255),
  3.   IN in_validador_valor varchar(255),
  4.   IN in_table varchar(255),
  5.   IN in_campos text,
  6.   IN in_valores text)
  7.   SET @query = CONCAT('SELECT * FROM ',in_table,' WHERE ',in_validador_campo,' = ',in_validador_valor);
  8.   PREPARE stmt FROM @query;
  9.   IF (EXECUTE stmt) IS NULL THEN
  10.     SET @qry = CONCAT('INSERT INTO ',in_table,' (',in_campos,') VALUES (',in_valores,')');
  11.     PREPARE stmt1 FROM @qry;
  12.     EXECUTE stmt1;
  13.   END IF;
  14.   DEALLOCATE PREPARE stmt;
  15.   DEALLOCATE PREPARE stmt1;

Tip:
No te olvides que debes eliminar la sentencia una vez usada, o de lo contrario te dará error si la mandas a ejecución en la misma conexión.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)