Originariamente inviato da luca200
i declare devono essere all'inizio
infatti, ho provato anche così senza formulare la query in modo variabile, ma da no database selected... eppure ho creato altre funzioni e ho i permessi per farlo

Codice PHP:
CREATE PROCEDURE test.HASH(IN len INTIN counter INTOUT rhash VARCHAR(30))
READS SQL DATA
COMMENT 
''
BEGIN
  
DECLARE done INT DEFAULT 0;
  DECLARE 
i INT DEFAULT 0;
  DECLARE 
h VARCHAR(24);

  DECLARE 
sql1 CURSOR FOR 
    
SELECT SUBSTRING(MD5(RAND()), -24) AS h;
  
  
CREATE TEMPORARY TABLE IF NOT EXISTS `hashes` (
    `
idint(10NOT NULL auto_increment,
    `
hashvarchar(24NOT NULL,
    
PRIMARY KEY  (`id`),
    
UNIQUE KEY `hash` (`hash`)
  );
  
  
OPEN sql1;
  
  
hash_loopLOOP
  FETCH sql1 INTO h
;
  
  
INSERT IGNORE INTO hashes VALUES);
  
  
SET i i+1;
  
  IF 
i=counter THEN
    SET done
=1;
    
LEAVE hash_loop;
  
END IF;
  
  
END LOOP hash_loop;
  
CLOSE sql1;
  
  
set rhash = ( SELECT FROM hashes );
  
DROP TABLE hashes;
  
END