SE APLICĂ LA: SQL Server Azure SQL Database Azure Synapse Analytics Parallel Data Warehouse

tabel

Parametrii cu valoare de tabel sunt declarați utilizând tipuri de tabele definite de utilizator. Puteți utiliza parametrii cu valoare de tabel pentru a trimite mai multe rânduri de date către o instrucțiune Transact-SQL sau o rutină, cum ar fi o procedură sau o funcție stocată, fără a crea un tabel temporar sau mai mulți parametri.

Parametrii cu valori de tabel sunt ca matrici de parametri în OLE DB și ODBC, dar oferă mai multă flexibilitate și o integrare mai strânsă cu Transact-SQL. Parametrii cu valoare de tabel au, de asemenea, avantajul de a putea participa la operațiuni bazate pe seturi.

Transact-SQL trece parametrii valorilor tabelelor la rutine prin referință pentru a evita realizarea unei copii a datelor de intrare. Puteți crea și executa rutine Transact-SQL cu parametri cu valoare de tabel și le puteți apela din codul Transact-SQL, clienți gestionați și nativi în orice limbă gestionată.

În acest subiect:

Beneficii

Un parametru cu valoare de tabel este aplicat procedurii stocate, funcției sau textului Transact-SQL dinamic, exact ca alți parametri. În mod similar, o variabilă de tip tabel are domeniu de aplicare ca orice altă variabilă locală care este creată utilizând o instrucțiune DECLARE. Puteți declara variabile cu valoare de tabel în cadrul instrucțiunilor Transact-SQL dinamice și puteți transmite aceste variabile ca parametri cu valori de tabel către procedurile și funcțiile stocate.

Parametrii cu valoare de tabel oferă mai multă flexibilitate și, în unele cazuri, o performanță mai bună decât tabelele temporare sau alte modalități de transmitere a unei liste de parametri. Parametrii cu valoare de tabel oferă următoarele avantaje:

  • Nu achiziționați blocări pentru populația inițială de date de la un client.
  • Oferiți un model simplu de programare.
  • Vă permite să includeți logica complexă de afaceri într-o singură rutină.
  • Reduceți călătoriile dus-întors la server.
  • Poate avea o structură de tabel de cardinalitate diferită.
  • Sunt puternic tastate.
  • Activați clientul pentru a specifica ordinea de sortare și cheile unice.
  • Sunt stocate în cache ca un tabel temporar atunci când sunt utilizate într-o procedură stocată. Începând cu SQL Server 2012 (11.x), parametrii cu valoare de tabel sunt, de asemenea, cache pentru interogări parametrizate.

Permisiuni

Pentru a crea o instanță a unui tip de tabel definit de utilizator sau pentru a apela o procedură stocată cu un parametru cu valoare de tabel, utilizatorul trebuie să aibă permisiunea EXECUTE pentru tip sau pentru schema sau baza de date care conține tipul.

Restricții

Parametrii cu valoare de tabel au următoarele restricții:

  • SQL Server nu menține statistici pe coloanele parametrilor cu valoare de tabel.
  • Parametrii cu valoare de tabel trebuie trecuți ca parametri de intrare READONLY la rutinele Transact-SQL. Nu puteți efectua operațiuni DML, cum ar fi UPDATE, DELETE sau INSERT pe un parametru cu valoare de tabel în corpul unei rutine.
  • Nu puteți utiliza un parametru cu valoare de tabel ca țintă a unei instrucțiuni SELECT INTO sau INSERT EXEC. Un parametru cu valoare de tabel poate fi în clauza FROM din SELECT INTO sau în șirul INSERT EXEC sau în procedura stocată.

Parametrii valorizați în tabel vs. BULK INSERT Operațiuni

Utilizarea parametrilor cu valoare de tabel este comparabilă cu alte moduri de utilizare a variabilelor bazate pe set; cu toate acestea, utilizarea frecventă a parametrilor cu valoare de tabel poate fi mai rapidă pentru seturile de date mari. În comparație cu operațiunile în bloc care au un cost de pornire mai mare decât parametrii cu valoare de tabel, parametrii cu valori de tabel funcționează bine pentru inserarea a mai puțin de 1000 de rânduri.

Parametrii cu valoare de tabel reutilizați beneficiază de stocarea temporară în cache a tabelelor. Această cache a tabelului permite o scalabilitate mai bună decât operațiile echivalente BULK INSERT. Prin utilizarea unor operații mici de inserare pe rând, un beneficiu mic de performanță ar putea fi obținut prin utilizarea listelor de parametri sau a instrucțiunilor în serie, în loc de operații BULK INSERT sau parametri cu valoare de tabel. Cu toate acestea, aceste metode sunt mai puțin convenabile de programat, iar performanța scade rapid pe măsură ce rândurile cresc.

Parametrii cu valoare de tabel funcționează la fel de bine sau mai bine decât o implementare echivalentă a matricei de parametri.

Exemplu

Următorul exemplu folosește Transact-SQL și vă arată cum să creați un tip de parametru cu valoare de tabel, să declarați o variabilă pentru a o referi, să completați lista de parametri și apoi să transmiteți valorile unei proceduri stocate în baza de date AdventureWorks.