CREATE TYPE [AS TABLE] – przekazanie tabeli do procedury

Z dokumentacji technet ( http://msdn.microsoft.com/en-us/library/ms175007%28v=sql.105%29.aspx )

Creates an alias data type or a user-defined type in the current database. The implementation of an alias data type is based on a SQL Server native system type. A user-defined type is implemented through a class of an assembly in the Microsoft .NET Framework common language runtime (CLR). To bind a user-defined type to its implementation, the CLR assembly that contains the implementation of the type must first be registered in SQL Server by using CREATE ASSEMBLY.

W SQL Server istnieje możliwość definiowania własnych typów danych. Dzięki temu można wcześniej stworzyć kilka przydatnych typów a później już tylko odowoływac się do nich po nazwie. Prócz tych zbudowanych ze standardowych definicji dostępnych w każdej bazie, można również budować złożone typy w C# i importowac je tą metodą. (szczegóły w dokumentacji)

Jednak najbardziej przydatną jest jeszcze jedna, ta która pozwala na zdefiniowanie zmiennej jako tabeli. Przy jej użyciu możemy przekazać wartości do procedury 🙂
Oczywiście przechowywanie dużej ilości danych w zmiennej nie jest najlepszym pomysłem, zwłaszcza tam, gdzie trzeba je jeszcze przeszukać (tu zdecydowanie lepszym rozwiązaniem są zwykłe tabele). Ale do przekazania niewielkiej ilości danych to rozwiązanie może trochę ułatwić życie.

Przykład
Stworzymy typ tabelaryczny, który zawiera jedno pole identity (pk) i dwa inne (int i varchar)
Następnie procedura, która w definicji będzie używała za argument nasz nowy typ, wewnątrz ma wykonac select z przekazanej tabeli.

Jedziemy:

Wynik:

POST PIERWOTNIE OPUBLIKOWANY JAKO TSQL NA DZIŚ #21

 

 

Dodaj komentarz