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 INT, IN counter INT, OUT 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` (
`id` int(10) NOT NULL auto_increment,
`hash` varchar(24) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `hash` (`hash`)
);
OPEN sql1;
hash_loop: LOOP
FETCH sql1 INTO h;
INSERT IGNORE INTO hashes VALUES( h );
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;