Oracle PL /SQL è un linguaggio procedurale che è un'estensione di SQL , o il linguaggio di interrogazione strutturato. Utilizzare il PL /SQL per ottenere i risultati desiderati quando il DML standard o Data Manipulation Language o select non può. Procedure, funzioni , trigger e pacchetti sono quattro tipi distinti di oggetti archiviati o dei programmi memorizzati , scritte in PL /SQL . È necessario comprendere il concetto di creare e mantenere gli oggetti memorizzati PL /SQL per ottimizzare le prestazioni e il tempo di programmazione . In questo articolo , l' attenzione è rivolta a una procedura e una funzione. Istruzioni 
 1 
 connettersi a Oracle SQL * Plus facendo clic su "Start ", " Tutti i programmi " e " sqlplus ". 
 2 
 Inserisci il tuo nome utente e password , quindi fare clic su "OK . " nella * finestra di dialogo Oracle SQL Plus +. 
 3 
 Creare una procedura. Una procedura viene compilato e memorizzato nel dizionario dati una volta . Memorizzazione di una sola copia della procedura rispettato riduce il traffico di rete quando più di un utente ha bisogno di chiamarlo . Al prompt di SQL , immettere il codice . 
 
 SQL > 
 
 " CREATE OR REPLACE PROCEDURE update_product_price ( 
 
 p_product_id IN products.product_id % TYPE , Stati 
 p_factor IN nUMERO 
 
 ) per 
 AS 
 
 v_product_count INTEGER ; 
 
 BEGIN 
 
 - contare il numero di prodotti con il < br > 
 - fornito product_id ) per 
 SELECT COUNT ( * ) per 
 INTO v_product_count 
 
 DA prodotti 
 
 DOVE product_id = p_product_id ; 
 
 - se il prodotto esiste ( v_product_count = 1) allora 
 
 - aggiornamento che prezzo 
 
 prodotto SE v_product_count = 1 allora 
 prodotti uPDATE 
 
 < p > Prezzo SET = prezzo * p_factor 
 
 DOVE product_id = p_product_id ; 
 
 COMMIT ; 
 
 END IF ; 
 
 ECCEZIONE 
 
 QUANDO altri allora 
 
 ROLLBACK ; 
 
 END update_product_price ; 
 
 /" 
 
 Dopo la procedura è compilato verrà visualizzato " Procedura creato " 
 < . p> Nota: per eseguire correttamente e chiamare questa procedura, una tavola prodotti deve esistere nel database Oracle con i dati memorizzati 
 
 Utilizzando il comando " SELECT" e "Dove " comando per interrogare il prezzo del prodotto # 1 . in modo che si può fare un confronto dopo la chiamata della procedura . Al prompt di SQL , immettere il codice 
 
 SQL > 
 
 "SELECT product_id , product_type_id , nome, descrizione , prezzo FROM prodotti WHERE 
 
 product_id = 1; " . < Br > 
 I risultati verranno visualizzati l'intero record , ma elencati di seguito è solo la colonna prezzo per il prodotto che viene etichettato come product_id = 1 . 
 
 pREZZO 
 
 ------- - 
 
 19.95 
 
 chiamare la procedura update_product_price . Al prompt di SQL , inserire il codice 
 
 SQL > 
 
 "CALL update_product_price ( 1 , 1.5); " . . 
 
 Chiamata completata 
 
 Il risultato display che la chiamata completata e il prezzo per produt_id viene aggiornato quando si utilizza la SELECT e WHERE comandi al prompt SQL 
 
 SQL > Prezzo SELECT FROM prodotti WHERE product_id = 1 ; . 
 
 prezzo < br > 
 ---------- 
 
 29.93 
 4 
 creare una funzione . Quando si chiama una funzione da una dichiarazione, che deve restituire un valore . Inoltre, per le molte funzioni consegnati fuori dalla scatola con il database Oracle 10g , gli sviluppatori di creare le proprie funzioni per aumentare l'impatto sulle prestazioni . Al prompt di SQL , immettere il codice . 
 
 SQL > 
 
 " CREATE OR REPLACE FUNCTION average_product_price ( 
 
 p_product_type_id IN INTEGER 
 
 ) NUMERO DI RITORNO < br > 
 AS 
 
 NUMERO v_average_product_price ; 
 
 BEGIN 
 
 SELECT AVG ( prezzo ) per 
 INTO v_average_product_price 
 
 DA prodotti < br > 
 DOVE product_type_id = p_product_type_id ; 
 
 RITORNO v_average_product_price ; 
 
 END average_product_price ; . 
 
 /" 
 
 Funzione creato 
 
 il risultato mostra la funzione creata e quindi la chiamata al average_product_price utilizzando l' istruzione SELECT dalla tabella duale . Al prompt di SQL , immettere il codice 
 
 SQL > 
 
 "SELECT average_product_price ( 1 ) per 
 da due; " . 
 
 AVERAGE_PRODUCT_PRICE ( 1 ) 
 
 ------------------------ 
 
 29.93 
 < br >