#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
Комментариев нет:
Отправить комментарий