MS SQL Jak najlepiej przesłać dużą liczbę parametrów do procedury.

0

Cześć.
Jaki jest najefektywniejszy sposób na przekazanie większej ilości argumentów do procedury (MS SQL)?
Bardzo chciałem tego uniknąć, ale muszę zrobić jedną procedurę, która będzie miała kilkadziesiąt (30-50) parametrów i zwracała wynik dla grida (stronicowanego).
Większość z nich będzie typu BIT bo potrzebuję tylko przekazać informację czy z danej kolumny zwracam dane lub wskazać na konkretne zachowanie procedury, reszta to raczej krótkie stringi.
Czy jest sens się bawić w upakowywanie wszystkich parametrów w jeden XML/DataTable/Table przy takiej ilości (30-50)?
Pozdrawiam

4

Mozesz utworzyć własny typ i jego przekazywać jako parametr
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-type-transact-sql?view=sql-server-ver15

4

Trochę mnie to rozwiązanie śmierdzi: jak dodasz nową kolumnę to będziesz modyfikował parametry procedury i dokładał kolejne? Opisz może szerzej co chcesz zrobić to będzie łatwiej coś doradzić.

0

Mam tabele z danymi o lotach, około 30 kolumn. Chcę napisać procedurę pobierająca dane do stronicowanego grida. Tego grida będą wyświetlali użytkownicy, którzy mają jeden z 20 typów. Każdy z tych typów widzi wyniki z części kolumn (przeważnie około połowy, ale niektórzy np tylko 8). Póki co wymyśliłem, że w kodzie na podstawie typu użytkownika będę wywoływał procedurę przekazując jej odpowiednie parametry, cześć z nich będzie do samego działania logiki w procedurze a część jedynie informacja typu PIT czy dana tablica ma zostać zwrócona. Bardzo źle to wymyśliłem? Przerobić bazy nie mogę.

4

Przesyłaj typ użytkownika z frontu i w funkcji na tej podstawie zwracaj odpowiednie dane (możesz w konfiguracji dodać klucz z kolumnami, jakie ma widzieć).

1

Dziękuję za odpowiedzi. Były bardzo pomocne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1