Newsgroup: it.comp.software.database
Titolo: Uso delle stored procedures

Ciao a tutti!
E' da un 2 ore circa che mi sto cimentando con le Stored Function per 
usare al meglio delle query in MySQL.
Ho provato a fare un esempio (leggermente modificato rispetto a quello 
che c'è su 
http://www.mysqltutorial.org/stored-procedures-parameters.aspx
 )
Vi mostro i comandi che fornisco a phpmyadmin come query SQL
  DELIMITER //
   CREATE PROCEDURE GetEsame(IN param INT(11))
      BEGIN
  		SELECT *
  		FROM esame
  		WHERE id = param;
      END //
   DELIMITER ;
Phpmyadmin poi mi ritorna questo errore:
query SQL: Documentazione
DELIMITER // CREATE PROCEDURE GetEsame(IN param INT(11)) BEGIN SELECT * 
FROM esame WHERE id = param;
Messaggio di MySQL: Documentazione
#1064 - 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 //
   CREATE PROCEDURE GetEsame(IN param INT(11))
Ho fatto vari tentativi, cambiando il delimitatore, le varie cose.... ma 
niente.... eppure ho visto vari siti internet che propongono 
praticamente la stessa soluzione.
In pratica il mio intento, in questo esempio, è di fornire l'id di un 
esame e questo mi ritorna il dettaglio di un esame(tutti i campi).
Ovviamente lo scopo attuale è inutile...però mi serviva per capire come 
funziona in modo che poi posso fare query complesse (ne ho alcune che 
sono di 3 righe XD) e riassumerle in una procedure.
Vi ringrazio in anticipo per le vostre delucidazioni.
Grazie 1000 in anticipo!
Netlopa

 
[cut]
visto che ti indica 'DELIMITER' come posizione dell'errore, hai provato a 
togliere 'DELIMITER' dallo script?
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

Anche togliendo le DELIMITER e togliendo la nuova punteggiatura (cioè i 
// ) mi da syntax error nella query nonostante mi sembri fatta secondo 
le regole di MySQL.
Mi sembra strano comunque...


 Vi mostro i comandi che fornisco a phpmyadmin come query SQL
Dalla documentazione di MySQL:
"If you use the mysql client program to define a stored program that 
contains the semicolon characters within its definition, a problem 
arises. By default, mysql itself recognizes semicolon as a statement 
delimiter, so you must redefine the delimiter temporarily to cause mysql 
to pass the entire stored program definition to the server."
( 
http://dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html
 )
Ovvero, DELIMITER e` un comando specifico del client mysql e non di 
PhpMyAdmin. Se lanci la creazione della stored procedure cosi` come l'hai 
scritta da mysql, vedrai che non ti ritornera` alcun errore
Enrico

Intanto vi ringrazio per le precedenti risposte (alla fine ho visto che 
era phpmyadmin a creare problemi :( ).
Ora avrei un altro problema con l'uso del LIKE in una stored proc
Query standard: ...WHERE nomecorso LIKE '%elet%'
Stored procedure: ...WHERE nomecorso LIKE '%givencorso%'
Dove givencorso è un parametro di tipo varchar passato alla procedure.
Il problema è che la stored proc non fa quello che vorrei: in pratica il 
LIKE non va come dovrebbe!
Ho visto su 
[url]
http://stackoverflow.com/questions/387638/sql-store-procedure-like-operator-variable[/url]
, 
ma anche in altre parti
Che si può fare, come nell'esempio:
WHERE CustomerName LIKE '%' + @CustomerName + '%'
Che ho riadattato come
...WHERE nomecorso LIKE '%' + givencorso + '%'
Solo che quando lo do in pasto a phpmyadmin mi ritorna questo:
#1064 - 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 '+ givencorso + '%'); END' at line 3
Ho provato in tutte le salse....ma non mi funziona questo LIKE :(
Cosa dovrei fare / ho sbagliato?
Grazie 1000 in anticipo
Netlopa
