#sql #sql_server
Создаю процедуру типа: CREATE PROCEDURE func @tmp INTEGER, @lot INTEGER, @qty INTEGER AS Чтобы передавать туда что-то вроде: EXEC func @tmp = 77, @lot = 191, @qty = 102; Но как сделать так, чтобы можно было передать множество значений произвольной длинный (типа массив)? Например: EXEC func @tmp = 77, @lot = 191, 201, 199, 63, @qty = 102, 314, 271;
Ответы
Ответ 1
Если версия сервера 2008 и старше, то можно использовать Table-Valued Parameters: CREATE TYPE intTable AS TABLE (value int) GO CREATE PROCEDURE func @tmp intTable READONLY, @lot intTable READONLY, @qty intTable READONLY AS BEGIN ... END; GO DECLARE @t intTable, @l intTable, @q intTable; INSERT @t (value) VALUES (77); INSERT @l (value) VALUES (191), (201), (199), (63); INSERT @q (value) VALUES (102), (341), (271); EXEC func @tmp = @t, @lot = @l, @qty = @q
Комментариев нет:
Отправить комментарий