Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    MySQL 5 e STORED PROCEDURE

    ho scaricato "mySQL 5.0.15" e ho provato a eseguire una STORED PROCEDURE:

    codice:
    CREATE PROCEDURE myProc ()
    BEGIN
         SELECT Nome,Cognome FROM Anagrafiche;
    END

    eseguo con "MySQL-Front" e mi restituisce il seguente errore:


    codice:
    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 'END' at line 1
    devo settare qualcosa nel Database ???
    Cosa sbaglio ???

  2. #2
    devi definire il DELIMITER

    poiche' devi chiudere il comando con un ; questo (punto e virgola) non puo' essere utilizzato come finale di stringa, ma bisogna cambiare il "DELIMITER". quindi definisci il DELIMITER come // (o qualunque altro carattere non utillizzato nella stringa) e inserisci all'interno il comando per la stored procedure. Es.:
    codice:
    DELIMITER //
    
    CREATE PROCEDURE myProc ()
    SELECT Nome,Cognome FROM Anagrafiche; //
    
    DELIMITER ; //
    Cosa si e' fatto....

    abbiamo definito come terminatore //
    abbiamo creato la procedura con comando terminato con //
    abbiamo ripristinato il terminatore ;


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    dimenticavo....

    probabilmente dall'interfaccia tipo phpmyadmin o mysql-front riceverai un errore perche non capisce la teminazione // (chiudono con il default tutte i comandi non terminati con ; )

    Prova da shell e vedrai che funziona.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Scusate se rispondo senza apportare nulla alla discussione, ma che cos'è una procedura?
    mi sembra di capire che sia l'equivalente una funzione definita in php, confermate?

    esiste solo in mysql5 ?

  5. #5
    Originariamente inviato da Petro_suse91
    Scusate se rispondo senza apportare nulla alla discussione, ma che cos'è una procedura?
    mi sembra di capire che sia l'equivalente una funzione definita in php, confermate?

    esiste solo in mysql5 ?
    Mancava quasi "solo" in mysql. Non e' proprio comparabile alle funzioni definite dallo user in php anche se una certa similitudine esiste.

    Si tratta di memorizzare in un apposito db di sistema delle "procedure" (query, funzioni, statements in genere) in modo che siano disponibili sul server a prescindere da qualsiasi applicativo si interfacci al server stesso. Quindi portabilita' (tra applicativi), compatibilita' (ogni versione avra' la 'sua' procedura), ecc.

    A che puo' servire? ... un esempio.. Metti che sviluppi un RDBM per una Intranet... puoi fornire oltre al db tutto il motore che serve al suo funzionamento a prescindere dall'applicativo che sara' utilizzato. L'applicativo si limitera' a fare la chiamata alla procedura memorizzata .... CALL myProc () .... e dietro alla chiamata potrebbe esserci una query di 10 pagine.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Originariamente inviato da piero.mac
    A che puo' servire? ... un esempio.. Metti che sviluppi un RDBM per una Intranet... puoi fornire oltre al db tutto il motore che serve al suo funzionamento a prescindere dall'applicativo che sara' utilizzato. L'applicativo si limitera' a fare la chiamata alla procedura memorizzata .... CALL myProc () .... e dietro alla chiamata potrebbe esserci una query di 10 pagine.
    Credo di aver capito: in pratica è inutile se sai che quel db sarà utilizzato da un solo applicativo (p.es. in php). Giusto?
    Però ho ancora dei dubbi:
    1) esiste solo in mysql? (eh eh sò de coccio)
    2) cos'è un RDBM? su internet ho trovato solo la definizione in tedesco (e mi sembra di capire che DB si dica DateBank, fico!)
    3) le procedure vengono memorizzate in un apposito db di sistema: vuol dire che allora non c'entra con mysql? sono sempre + confuso...

  7. #7
    gia' de coccio.... lo hanno quasi tutti i RDBMS (mancava la S di system).

    RDBMS (Relational DataBase Management System)

    Mysql da qualche parte lo dovra' pur scrivere quello che gli dici e lo scrive in una apposita tabella che si chiama proc, mentre altre info le scrive in un database che si chiama information_schema.

    Che sia inutile certamente lo e' come potrebbe esserlo la gnocca se ti adegui ad essere autonomo.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Ok ora è più chiaro. Grazie

    Originariamente inviato da piero.mac
    Che sia inutile certamente lo e' come potrebbe esserlo la gnocca se ti adegui ad essere autonomo.
    appunto, se un db devo usarlo solo io dal mio script php che sarà sempre quello, posso anche farne a meno no?

  9. #9
    Originariamente inviato da piero.mac
    devi definire il DELIMITER

    poiche' devi chiudere il comando con un ; questo (punto e virgola) non puo' essere utilizzato come finale di stringa, ma bisogna cambiare il "DELIMITER". quindi definisci il DELIMITER come // (o qualunque altro carattere non utillizzato nella stringa) e inserisci all'interno il comando per la stored procedure. Es.:
    codice:
    DELIMITER //
    
    CREATE PROCEDURE myProc ()
    SELECT Nome,Cognome FROM Anagrafiche; //
    
    DELIMITER ; //
    Cosa si e' fatto....

    abbiamo definito come terminatore //
    abbiamo creato la procedura con comando terminato con //
    abbiamo ripristinato il terminatore ;



    Scusate il ritardo!!!

    Non so cosa dire ma ora funziona benissomo come ho postato in precedenza,

    credo che era un po IMPEDITO il mio "MySQL-Server",

    ma in cambio e sorto un altro tipo di errore!!!

    al primo sbaglio di sintassi o altro che causa un messaggio di errore mi si pianta tutto e continua a dare errore persino se torno indietro al codice esatto..., devo riavviare il servizio di "mysqld.exe" se voglio ripartire, sara colpa del "MySQL-Front" o del "MySQL" che e' bacato ???

  10. #10
    se mysql-front e' la versione 2.5 come suppongo ... credo non abbia la piu' pallida idea delle cose presenti in mysql 5, e manco in mysql 4.1.

    Funziona per lo standard di retrocompatibilita' che sicuramente deve avere mysql 5.... ma nulla piu'. Anche phpmyadmin non e' tuttora totalmente efficiente con mysql5. Credo sia ora di iniziare ad usare mysql query browser.... sembra ideato da un asociale, ma quando poi si capisce il giro del fumo, si riesce a lavorare "abbastanza" bene.

    Oppure prova SQLyog.... niente male anche la versione light (free edition). Anzi, se usi mysql-front dovresti trovarti immediatamente a tuo agio.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.