SQL Server - przekazywanie listy id jako parametr w procedurze

0

Cześć,
na wstępie chciałbym zaznaczyć, że dopiero zaczynam naukę z językiem SQL więc proszę o wyrozumiałość 🙂

Tworzę właśnie procedurę, w której jako parametr chcę przekazać listę id objętych operacją, na zasadzie:

SELECT * FROM ... WHERE id IN (1, 6, 8, ..);

Spróbowałem stworzyć coś takiego:

CREATE PROCEDURE uspTestowa
(
  @dotyczy varchar(MAX)
)
AS
  SELECT * FROM tabela
  WHERE id IN (@dotyczy);

i wywołać ją za pomocą

EXEC uspTestowa '1, 2';

ale otrzymuję błąd:

Conversion failed when converting the varchar value '1, 2' to data type int.

Wiem, jaki jest problem - nie można tak po prostu wrzucić stringa do zapytania - ale nie wiem, jak zrobić to inaczej 🙂

Dziękuję z góry za wszelkie odpowiedzi!

2

Dodam jeszcze, że można przekazać listę poprzez

  1. tabelę tymczasową (hashową) - ładujesz dane w nadrz. procedurze, odczytujesz w podrzędnej
  2. parametrem w postaci XML
2

Można też brzydko - skleić selecta z tekstu i zmiennej zawierającej listę ID, a potem wywołać za pomocą sp_executesql

1

Podaje linka który pewnie sporej części bywalców tego forum jest już znany, ale który ładnie podsumowuje różne metody przekazywania parametrów w jednym miejscu
https://www.sommarskog.se/share_data.html

0

Dziękuję wszystkim za pomoc, postanowiłem użyć Table-valued Parameters 🙂

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