• User Attivo

    tradurre query in procedura

    ciao a tutti.ho installato wamp e ora sto usando il seguente manuale presente su html per fare una store procedures

    "Vediamo adesso un esempio concreto di stored procedure:
    CREATE PROCEDURE nomeProc (IN param1 INT, OUT param2 INT)
    SELECT COUNT(*) INTO param2 FROM tabella
    WHERE campo1 = param1;
    Questa istruzione crea una procedura chiamata 'nomeProc' nel database in uso; la procedura usa un parametro in input e uno in output, entrambi interi, ed effettua il conteggio delle righe in tabella in cui il valore di campo1 corrisponde al primo parametro; il risultato della query viene memorizzato nel secondo parametro attraverso la clausola INTO.
    Ecco come chiamare la procedura e visualizzare il risultato:
    CALL nomeProc (5, @a);
    SELECT @a;
    Con l'istruzione CALL effettuiamo la chiamata della procedura (immaginando che il database attualmente in uso sia lo stesso a cui la procedura è associata), passando il valore 5 come parametro di input e la variabile @a come parametro di output, nel quale verrà memorizzato il risultato. La SELECT successiva visualizza il valore di tale variabile dopo l'esecuzione"

    e ora vorrei tradurre questa mi query in modo da fare una store procedures

    $strSQL = "SELECT * FROM studenti WHERE username = '".$username."'";
    $strSQL .= " AND password = MD5('".$password."')";
    $result1 = mysql_query($strSQL);
    $row1 = mysql_fetch_row($result1);

    come si traduce?no ho ben capito mi date una mano?


  • Super User

    mmm
    le storeprocedure come i trigger sono delle figate esagerate purtroppo però per molti ma non per tutti. la motivazione è che funzionano solo con mysql 5.
    Prima di imbatterti in quest'avventura (di sicuro interesse ed utilità indipendentemente dalla possibilità di utilizzo) hai verificato la versione di mysql di cui disponi?

    come minimo viene qualcuno che mi smentisce dicendo "pirla anche su mysql3 funzionano le store procedure" e faccio la figura del pirla quadrato.


  • User Attivo

    ciao e grazie per la risposta
    ci ho la versione 5.0.25di mysql.
    uso wamp

    mi dai qualche indicazione su come fare?

    ciao e grazie


  • Super User

    CREATE PROCEDURE nomeProc (IN param1 INT, IN param2 CHAR, OUT param2 INT)
    SELECT * FROM studenti WHERE username = param1 and password = param2;

    chiamata
    CALL nomeProc (5, @a);
    SELECT @a;

    prova in questo modo, l'ho fatta in base all'esempio riportato da te e devi verificare se è corretto char o ci và qualcosaltro

    ovviamente devi passare la stringa già in md5 😉

    fammi sapere come va che sono curioso.


  • User Attivo

    ciao, è sicuro che l store procedure valgono solo dalla versione 5 in poi.
    lo provo ne l primo pomeriggio e poi ti faccio sapere.

    ciao


  • User Attivo

    ciao sto provando adesso

    ma la sintassi non è ben corretta, in param1 e 2 che ci devo mettere?devo lasciarli cosi?

    la guida che seguo è su http://database.html.it/guide/lezione/2455/stored-procedures-e-stored-functions/


  • User Attivo

    forse riesco a scriverla bene
    ma sbaglio la CALL


  • User Attivo

    allora la store procedure è questa

    SELECT * FROM studenti
    where [EMAIL="username=@username"]username=@username[/EMAIL] and password [EMAIL="=@pass"]=@pass[/EMAIL]

    e la chiamata nel codice è questa:

    $strSQL="CALL rocco username = '".$username."' password = MD5('".$password."')";

    credi che il problema sia nel passaggio dei parametri

    che vedete di strano?