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

MS SQL Jak najlepiej przesłać dużą liczbę parametrów do procedury.
DF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
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

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
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

UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
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ć.

DF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
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ę.

UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
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ć).

DF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.