- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Inserimento di più righe in Mysql
-
Delimiter // è necessario, senza di quello non puoi eseguire procedure e funzioni. Mostrami l'errore.
Per quanto riguarda la funzione, prova così: [PHP]
DELIMITER //
CREATE function multiple (num INT)
RETURNS int
BEGIN DECLARE stop INT default 1;
ciclo: WHILE stop<=num DO
INSERT INTO t1(id) VALUES('0');
set stop=stop+1;
END WHILE ciclo;
return 1;
END; [/PHP]
EDIT [così funziona]
-
UP [post sopra aggiornato]
-
Ciao, ho provato, ma niente, volevo inserire un'immagine dell'errore manon so farlo, l'errore è questo
SQL ERROR:you have an error in your SQL syntax near DELIMITER// CREATEfunction multiple(num INT) RETURNS int BEGIN DECLARE at line 1 01 - DELIMITER // 02 - CREATE function multiple (num INT) 03 - RETURNS int 04 - BEGIN DECLARE stop INT default 1; 05 - ciclo: WHILE stop<=num DO 06 - INSERT INTO tab_registrazione(id_giocatore) VALUES('1'); 07 - set stop=stop+1; 08 - END WHILE ciclo; 09 - return 1; 10 - END; 11 - select multiple(50);
-
E' assurdo che ti dia errore su Delimiter. Dove stai inserendo il codice? Versione di mysql?
Domani verifico.
-
[...]
Io uso heidi sql ed inserisco il codice nella parte sql query
Ciao e grazie
-
Ho verificato in internet e sembra che heidisql non vada particolarmente d'accordo con il comando DELIMITER.
Per verificare che il comando venga eseguito correttamente prova a eseguire questo codice:DELIMITER foo
SELECT 1;
SELECT 2;
DELIMITER ;Se heidisql genera errore, qualcosa non funziona nella tua versione (leggendo in giro, un anno fa heidisql generava un bug con il comando DELIMITER). Delimiter è un comando essenziale per generare procedure, funzioni e trigger in MySql.
http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
-
[...]
Ciao, infatti genera errore, sono andato sul link che hai postato, mi consigli di fare il download di MySql, oppure hai qualcosa di meglio da propormi
Ciao da danny
-
La versione di HeidiSql è aggiornata? Se non lo è, prova ad aggiornarla.
Se anche con la versione aggiornata ti genera errore, non saprei come aiutarti, in quanto HeidiSql non lo conosco e nonostante vi siano diverse discussioni sui problemi di Delimiter di quest'ultimo, il sito risulta sfortunatamente off-line.
Ho sempre usato MySql e non ho esperienze con HeidiSql, mi spiace.
-
[...]
Va bene, grazie, mo vedo come posso aggiornarlo, spero che l'amico che ha postato il primo tread non abbia lo stesso problema
Ciao
-
Io ho testato il codice su MySql e non ha dato errore. Vedremo domani
-
Ecco cosa ho inserito io
[php]DELIMITER //
CREATE function multiple (num INT)
RETURNS int
BEGIN DECLARE stop INT default 1;
ciclo: WHILE stop<=num DO
INSERT INTO t1(id) VALUES('0');
set stop=stop+1;
END WHILE ciclo;
return 1;
END;select multiple(50);[/php]e il messaggio di errore quando richiamo la funzione
[php]Error : 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 ';
DELIMITER;select multiple(50)' at line 9[/php]
-
Ciao, forse non hai inserito il nome giusto della tabella e dell'attributo.
@Bazarop said:
PS: ovviamente tabella e attributi possono essere scelti in modo arbitrario. Al posto di "t1(id)", inserire "table_web(dir)".
-
Funziona tutto!
Perfetto!!!
La funzione si è memorizzata all'interno del database e adesso basta solo richiamarla!
Grazieeeeeeeee
-
Ciao Pettedemon, figurati
-
Domanda:
se io devo inserire altre variabili che si inseriscano nel mio ciclo, come funziona la procedura per inizializzarle ?
Grazie!
-
DECLARE var INT default 1;
Declare var int -> dichiara la variabile "var" e il tipo;
Default 1 -> indica il valore iniziale uguale ad uno.L'equivalente in php di :
var $pippo;
$pippo=1;
-
Questa è la mia funzione
[PHP]DELIMITER //
CREATE function inserimento_f_4 (num INT, numero INT, dal_data DATE)
RETURNS int
BEGIN
DECLARE stop INT default 1;
DECLARE numero INT;
DECLARE dal_data DATE;
ciclo: WHILE stop<=num DO
INSERT INTO dati_web(posizione,n,dal) VALUES(stop,numero,dal_data);
set stop=stop+1;
END WHILE ciclo;
return 1;
END; [/PHP]Devo inserire un numero progressivo e mi va bene la varabile del ciclo e funziona, poi devo inserire in ogni riga, un numero uguale per tutti e una data....
[PHP]select inserimento_f_4 (15, 945, '2011-10-05')[/PHP]ho provato così ma non funziona...
Cosa sbaglio ?
Grazie
-
Mi rispondo da solo perchè ho risolto.
Non serve inizializzare la variabile numero da inserire e data, basta inserirle come parametri della funzione e funziona tutto
[PHP]DELIMITER //
CREATE function inserimento_f_10 (num INT, numero INT, data_dal DATE)
RETURNS int
BEGIN
DECLARE stop INT default 1;
ciclo: WHILE stop<=num DO
INSERT INTO tab_web(posizione,n,dal) VALUES(stop,numero,data_dal);
set stop=stop+1;
END WHILE ciclo;
return 1;
END; [/PHP]e poi alla funzione gli passa i valori che mi servono
[PHP]select inserimento_f_10 (15, 945, '2011-05-02')[/PHP]
-
Esattamente, se la variabile è un INPUT della FUNZIONE, non serve il declare.
Tu parlavi di inizializzare variabile da inserire nel ciclo e avevo frainteso.Ciao
Andrea