Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    store procedure execute con date

    codice:
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `progetto`.`lista` $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `lista`(data1 Date, data2 Date)
    BEGIN
    
    
    SET @qry =  'SELECT tbl.nome,tbl.ID,prezzi(ID,'data1','data2') from tbl';
    
      PREPARE s1 FROM @qry;
      EXECUTE s1;
     DEALLOCATE PREPARE s1;
    
    END $$
    
    DELIMITER ;

    l'errore è

    Script line: 4 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'data1','data2') from rooms';

    PREPARE s1 FROM @qry;
    EXECUTE s1;
    DEALLOC' at line 5


    come inserisco un parametro nella stringa ?

  2. #2
    stai attento agli apici nel select. potrebbe essere quello il problema

  3. #3
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    Lo so che sono quelli...

    o meglio questi...
    ma data1 e data2 sono 2 parametri che devo usare nella query...

    prezzi(ID,'data1','data2')

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    Ho fatto questa prova..

    codice:
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `test_proc`$$
    
    CREATE PROCEDURE `test_proc`(parameter VARCHAR(100),data1 date,data2 date)
    BEGIN
    DECLARE T1 TEXT;
    DECLARE T2 TEXT;
    DECLARE T3 TEXT;
    	SET T1 = CONCAT('SELECT * FROM tbl WHERE ID IN (', parameter, ')');
      SET T2 = " and prezzi(ID,data1,data2)";
      SET T3 = CONCAT(T1,T2);
    	SELECT T3;
    END$$
    DELIMITER ;
    e ottengo

    SELECT * FROM tbl WHERE ID IN (1,2,3) and prezzi(ID,data1,data2)

    però i valori di data1 e data2 vengono gestiti come testo... anzichè come parametri

  5. #5
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    RISOLTO

    codice:
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `test_proc`$$
    
    CREATE PROCEDURE `test_proc`(parameter VARCHAR(100),data1 date,data2 date)
    BEGIN
    DECLARE T1 TEXT;
    DECLARE T2 TEXT;
    DECLARE T3 TEXT;
    DECLARE T4 TEXT;
    DECLARE T5 TEXT;
    
    SET t4 = data1;
    SET t5 = data2;
    	SET T1 = CONCAT('SELECT * FROM TBL WHERE ID IN (', parameter, ')');
      SET T2 = CONCAT(' and prezzi(ID,',T4,',',T5,')');
      SET T3 = CONCAT(T1,T2);
    	SELECT T3;
    END$$
    DELIMITER ;
    ottengo :

    SELECT * FROM TBL WHERE ID IN (1,2,3) and prezzi(ID,2007-10-22,2007-10-24)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.