Creazione di viste e stored procedure
Dopo aver concesso all'utente Mary l'accesso al database TestData è possibile creare alcuni oggetti di database, ad esempio una vista e una stored procedure, quindi concedere a Mary l'accesso a tali oggetti. Una vista è costituita da un'istruzione SELECT, mentre una stored procedure da una o più istruzioni Transact-SQL eseguite in batch.
Sulle viste è possibile eseguire query come con le tabelle, ad eccezione del fatto che le viste non accettano parametri. Le stored procedure sono più complesse delle viste e possono avere parametri di input e output, nonché contenere istruzioni per controllare il flusso del codice, ad esempio istruzioni IF e WHILE. È consigliabile dal punto di vista della programmazione utilizzare le stored procedure per tutte le azioni ripetitive sul database.
In questo esempio si userà CREATE VIEW per creare una vista che seleziona solo due delle colonne incluse nella tabella Products . Si utilizzerà quindi CREATE PROCEDURE per creare una stored procedure che accetta un parametro di prezzo e restituisce solo i prodotti il cui costo è inferiore al valore di tale parametro.
Per creare una vista
Eseguire l'istruzione seguente per creare un vista molto semplice che esegue un'istruzione SELECT e restituisce i nomi e i prezzi dei prodotti.
CREATE VIEW vw_Names AS SELECT ProductName, Price FROM Products; GO
Test della vista
Le viste vengono utilizzate in modo analogo alle tabelle. Utilizzare un'istruzione
SELECT
per accedere a una vista.SELECT * FROM vw_Names; GO
Per creare una stored procedure
L'istruzione seguente crea una stored procedure denominata
pr_Names
che accetta un parametro di input denominato@VarPrice
con tipo di datimoney
. La stored procedure visualizza il testoProducts less than
concatenata al parametro di input modificato da tipo di datimoney
in tipo di dati caratterevarchar(10)
. La procedura esegue quindi un'istruzioneSELECT
sulla vista, passando il parametro di input come parte della clausolaWHERE
. Ciò restituisce tutti i prodotti il cui costo è inferiore al valore del parametro di input.CREATE PROCEDURE pr_Names @VarPrice money AS BEGIN -- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10)); -- A second statement starts here SELECT ProductName, Price FROM vw_Names WHERE Price < @varPrice; END GO
Test della stored procedure
Per testare la stored procedure, digitare ed eseguire l'istruzione seguente. La procedura restituirà i nomi di due prodotti immessi nella tabella
Products
nella lezione 1 con prezzo inferiore a10.00
.EXECUTE pr_Names 10.00; GO
Attività successiva della lezione
Concessione dell'accesso a un oggetto di database