martedì 7 aprile 2009

SQL Server 2008 Row Constructors

Con SQL Server 2008 è stato introdotto il concetto di “Row Constructor” che aiuta senza dubbio a scrivere codice più compatto e in meno tempo.
Tramite l’utilizzo di Row Constructors è possibile inserire più righe in una tabella utilizzando un’unica istruzione INSERT:

INSERT INTO dbo.Customers(custid, companyname, phone, address)
VALUES
(1, 'cust 1', '(111) 111-1111', 'address 1')
,(2, 'cust 2', '(222) 222-2222', 'address 2')
,(3, 'cust 3', '(333) 333-3333', 'address 3')
,(4, 'cust 4', '(444) 444-4444', 'address 4')
,(5, 'cust 5', '(555) 555-5555', 'address 5');



In aggiunta a questa possibilità, ora la clausola VALUES è generale anche con altri comandi; in particolare è utilizzabile laddove sia necessario poter accedere ad una serie di valori, come se questi fossero in una tabella, ma senza avere una tabella reale. In parole più semplici è possibile riscrivere una serie di SELECT unite da un operatore UNION come un unico comando SELECT…VALUES:

SELECT *
FROM
(VALUES
(1, 'cust 1', '(111) 111-1111', 'address 1')
,(2, 'cust 2', '(222) 222-2222', 'address 2')
,(3, 'cust 3', '(333) 333-3333', 'address 3')
,(4, 'cust 4', '(444) 444-4444', 'address 4')
,(5, 'cust 5', '(555) 555-5555', 'address 5')
) AS C(custid, companyname, phone, address);

Nessun commento: