Lista Utenti taggati

Risultati da 1 a 3 di 3

Discussione: stored procedures

  1. #1
    Utente Attivo
    Data Registrazione
    25-07-11
    Messaggi
    117
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito stored procedures

    ciao stavo studiando per conto prima stored procedures cosa nn affrontata nel corso di database....il fatto e che negli esempio che ho la funzione prende dei parametri presi dall'esterno...ma visto che le stored procedures sono diverse dal jdbc quindi nn interagiscono quale è l istruzione per passare il valore? oppure anche le stored procedur interagiscono con il programma?

  2.  
    Stanco della Pubblicità? Registrati

  3. #2
    kyx
    kyx è offline
    Bannato
    Data Registrazione
    07-08-11
    Messaggi
    178
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: stored procedures

    Ma che RDBMS?

    In MySQL puoi fare una cosa tipo questa:
    Codice:
    CREATE PROCEDURE build_suggesting_languages(IN in_lang VARCHAR(2))
    BEGIN
        DECLARE build_done INT DEFAULT 0;
        DECLARE l_town VARCHAR(60);
        DECLARE l_state VARCHAR(60);
        DECLARE l_country VARCHAR(60);
        DECLARE l_countryCode VARCHAR(2);
        DECLARE table_name VARCHAR(20);
        DECLARE build_cursor CURSOR FOR SELECT town,state,country,countryCode FROM suggesting_places WHERE language = in_lang;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET build_done = 1;
        SET table_name = CONCAT_WS('_', 'suggesting_places', in_lang);
        SET @drop_table := CONCAT('DROP TABLE IF EXISTS ', table_name, ';');
        PREPARE drop_table_sql FROM @drop_table;
        EXECUTE drop_table_sql;
        DEALLOCATE PREPARE drop_table_sql;
        SET @create_table := CONCAT(
            'CREATE TABLE ', table_name, ' ( ',
                'id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ',
                'town VARCHAR(60) NOT NULL, ',
                'state VARCHAR(60) NOT NULL, ',
                'country VARCHAR(60) NOT NULL, ',
                'countryCode VARCHAR(60) NOT NULL ',
                ') ENGINE=MyISAM DEFAULT CHARSET=utf8;'
        );
        PREPARE create_table_sql FROM @create_table;
        EXECUTE create_table_sql;
        DEALLOCATE PREPARE create_table_sql;
        SET @indexing_table := CONCAT('CREATE FULLTEXT INDEX index_', table_name, ' ON ', table_name,' (town);');
        PREPARE indexing_query FROM @indexing_table;
        EXECUTE indexing_query;
        DEALLOCATE PREPARE indexing_query;
        OPEN build_cursor;
        build_loop: LOOP
            FETCH build_cursor INTO l_town, l_state, l_country, l_countryCode;
            IF build_done = 1 THEN
                LEAVE build_loop;
            END IF;
            SET @suggesting_table := CONCAT('INSERT INTO ', table_name, ' (town, state, country, countryCode) VALUES ("', l_town, '","', l_state, '","', l_country, '","', l_countryCode, '");');
            PREPARE insert_query FROM @suggesting_table;
            EXECUTE insert_query;
            DEALLOCATE PREPARE insert_query;
        END LOOP;
        CLOSE build_cursor;
        SET @optimize_table := CONCAT('OPTIMIZE TABLE ', table_name, ';');
        PREPARE optimize_query FROM @optimize_table;
        EXECUTE optimize_query;
        DEALLOCATE PREPARE optimize_query;
    END //
    DELIMITER ;
    Chiamarla con una query

    CALL build_suggesting_languages('it');

    se vedi nella specifica della firma della funzione c'e` IN prima del primo parametro, puoi dichiarare anche un parametro con

    OUT nomevar

    e poi alla fine della stored proc prendere il valore con SELECT @nomevar;


    tipo come se fosse un puntatore che viene inizializzato nel corpo della funzione

  4. #3
    Utente Attivo
    Data Registrazione
    21-08-09
    Località
    Reggio Emilia - Modena
    Messaggi
    182
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: stored procedures

    Devi pensare la Stored Procedure come una "Funzione" che già risiede nel database. Questa funzione può accettare o meno dei parametri che serviranno appunto a parametrizzare la tua funzione. La forza della SP sta nel fatto che è già disponibile e "conosciuta" dall' RDBMS che la eseguirà più velocemente di una query che effettua la stessa operazione.
    Concluso positivamente con:

  5.  
    Stanco della Pubblicità? Registrati

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Torna Su