Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2014, 10:45
Rebuilding
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 9 años, 9 meses
Puntos: 4
Error de sintasix en PROCEDURE

Hola este es mi procedure

Código MySQL:
Ver original
  1. DELIMITER ;;
  2.  
  3. DROP PROCEDURE IF EXISTS `SELECCIONAR`;;
  4. CREATE PROCEDURE `SELECCIONAR`(`DATOS` text, `LIKED` int(1), `PAGINA` int(15), `RESULTPORPAG` int(3),`USUARIO` int(10), `FECHA` datetime, `IP` varchar(15))
  5. DECLARE INFOUNO text;
  6.  
  7. DECLARE inilimite INT(10);
  8. SET dolar=(SELECT PRECIO FROM DOLAR ORDER BY ID DESC LIMIT 1);
  9. SET iva=(SELECT PORCENTAJE/100 FROM IVA ORDER BY ID DESC LIMIT 1);
  10.  
  11. IF(LIKED=1) THEN
  12.     SET @INFO=DATOS;
  13.     PREPARE stmt FROM "SELECT PRODUCTO FROM PRODUCTOS WHERE PRODUCTO LIKE ? LIMIT 0,10;";
  14.     EXECUTE stmt USING @INFO;
  15. IF(LIKED=2) THEN
  16.     IF(PAGINA=0) THEN
  17.         INSERT INTO BUSQUEDA (ID,USUARIO,DATOS,FECHA,IP) VALUES ('',USUARIO,DATOS,FECHA,IP);
  18.         SET @INI=0;
  19.     END IF;
  20.     IF(PAGINA>0) THEN
  21.         SET @INI=(PAGINA*RESULTPORPAG)-RESULTPORPAG;
  22.         SET DATOS=(SELECT DATOS FROM BUSQUEDA ORDER BY ID DESC LIMIT 1);
  23.     END IF;
  24.    
  25.     SET @FIN=RESULTPORPAG;
  26.     SET @INFO=DATOS;
  27.   SET @CONSTRUYE=CONCAT('SELECT ID,PRODUCTO,DESCRIPCION,
  28.                                 FORMAT((((((COSTOVENTA*',dolar,')*',iva,')+
  29.                                 ((COSTOVENTA*',dolar,')))*(UTILIDAD/100))+
  30.                                 (((COSTOVENTA*',dolar,')*',iva,')+
  31.                                 ((COSTOVENTA*',dolar,')))),2) AS PRECIOSINIVA,
  32.                                 FORMAT(((((((COSTOVENTA*',dolar,')*',iva,')+
  33.                                 ((COSTOVENTA*',dolar,')))*(UTILIDAD/100))+     
  34.                                 (((COSTOVENTA*',dolar,')*',iva,')+
  35.                                 ((COSTOVENTA*',dolar,'))))*',iva,'),2) AS IVAPAGAR,
  36.                                 FORMAT(((((((COSTOVENTA*',dolar,')*',iva,')+
  37.                                 ((COSTOVENTA*',dolar,')))*(UTILIDAD/100))+
  38.                                 (((COSTOVENTA*',dolar,')*',iva,')+
  39.                                 ((COSTOVENTA*',dolar,'))))*',iva,')+
  40.                                 (((((COSTOVENTA*',dolar,')*',iva,')+
  41.                                 ((COSTOVENTA*',dolar,')))*(UTILIDAD/100))+     
  42.                                 (((COSTOVENTA*',dolar,')*',iva,')+
  43.                                 ((COSTOVENTA*',dolar,')))),2) AS PRECIOCLIENT,
  44.                                 DISPONIBILIDAD,VERSIONHIST FROM HISTPRODS,PRODUCTOS
  45.                                 WHERE PRODUCTO LIKE ? AND
  46.                                 (IDPROD=ID AND VERSION=VERSIONHIST)                            
  47.                                 LIMIT ?, ?;');
  48.  
  49.  
  50.     PREPARE stmt FROM @CONSTRUYE;
  51.     EXECUTE stmt USING @INFO, @INI, @FIN;
  52. IF(LIKED=3) THEN
  53.     IF(PAGINA=0) THEN
  54.         INSERT INTO BUSQUEDA (ID,USUARIO,DATOS,FECHA,IP) VALUES ('',USUARIO,DATOS,FECHA,IP);
  55.         SET @INI=0;
  56.     END IF;
  57.     IF(PAGINA>0) THEN
  58.         SET @INI=(PAGINA*RESULTPORPAG)-RESULTPORPAG;
  59.         SET DATOS=(SELECT DATOS FROM BUSQUEDA ORDER BY ID DESC LIMIT 1);
  60.     END IF;
  61.     SET @FIN=RESULTPORPAG;
  62.     SET INFOUNO=(SELECT substring_index(DATOS,'|',1) FROM dual);
  63.     SET @INFODOS=(SELECT substring_index(substring_index(DATOS,'|',2),'|',-1) FROM dual);
  64.     SET @INFOTRES=(SELECT substring_index(substring_index(DATOS,'|',3),'|',-1) FROM dual);
  65.     SET @INFOCUATRO=(SELECT substring_index(DATOS,'|',-1) FROM dual);      
  66.     SET @SQLORDEN=REPLACE(INFOUNO,",","' OR `ORDEN` ='");
  67.     SET @CONSTRUYE=CONCAT('SELECT ID,PRODUCTO,DESCRIPCION,
  68.                                 FORMAT((((((`COSTOVENTA`*',dolar,')*',iva,')+
  69.                                 ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+
  70.                                 (((`COSTOVENTA`*',dolar,')*',iva,')+
  71.                                 ((`COSTOVENTA`*',dolar,')))),2) AS `PRECIOSINIVA`,
  72.                                 FORMAT(((((((`COSTOVENTA`*',dolar,')*',iva,')+
  73.                                 ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+     
  74.                                 (((`COSTOVENTA`*',dolar,')*',iva,')+
  75.                                 ((`COSTOVENTA`*',dolar,'))))*',iva,'),2) AS `IVAPAGAR`,
  76.                                 FORMAT(((((((`COSTOVENTA`*',dolar,')*',iva,')+
  77.                                 ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+
  78.                                 (((`COSTOVENTA`*',dolar,')*',iva,')+
  79.                                 ((`COSTOVENTA`*',dolar,'))))*',iva,')+
  80.                                 (((((`COSTOVENTA`*',dolar,')*',iva,')+
  81.                                 ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+     
  82.                                 (((`COSTOVENTA`*',dolar,')*',iva,')+
  83.                                 ((`COSTOVENTA`*',dolar,')))),2) AS `PRECIOCLIENT`,
  84.                                 `DISPONIBILIDAD`,`VERSIONHIST` FROM `HISTPRODS`,`PRODUCTOS`
  85.                                 WHERE `IDPROD`= `ID` AND `VERSION`=`VERSIONHIST`
  86.                                 AND  (`ORDEN` =  '?') AND                                  
  87.                                 ((((((((`COSTOVENTA`*',dolar,')*',iva,')+
  88.                                 ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+
  89.                                 (((`COSTOVENTA`*',dolar,')*',iva,')+
  90.                                 ((`COSTOVENTA`*',dolar,'))))*',iva,')+
  91.                                 (((((`COSTOVENTA`*',dolar,')*',iva,')+
  92.                                 ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+
  93.                                 (((`COSTOVENTA`*',dolar,')*',iva,')+
  94.                                 ((`COSTOVENTA`*',dolar,'))))>?) AND
  95.  
  96.                         (((((((`COSTOVENTA`*',dolar,')*',iva,')+
  97.                         ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+
  98.                         (((`COSTOVENTA`*',dolar,')*',iva,')+
  99.                         ((`COSTOVENTA`*',dolar,'))))*',iva,')+
  100.                         (((((`COSTOVENTA`*',dolar,')*',iva,')+
  101.                         ((`COSTOVENTA`*',dolar,')))*(`UTILIDAD`/100))+     
  102.                         (((`COSTOVENTA`*',dolar,')*',iva,')+
  103.                         ((`COSTOVENTA`*',dolar,'))))<?)) ORDER BY `PRECIOCLIENT`
  104.                         ? LIMIT ?,?;');
  105.  
  106.     PREPARE stmt FROM @CONSTRUYE;
  107.     EXECUTE stmt USING @SQLORDEN, @INFODOS,@INFOTRES,@INFOCUATRO,@INI,@FIN;
  108.  
  109. END;;
  110.  
  111. DELIMITER ;

Y este es el error:
Error en consulta (1064): Syntax error near '?') AND ((((((((`COSTOVENTA`*',dolar,')*',iva,')+ ((`' at line 49