Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

array in procedure

#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

Комментариев нет:

Отправить комментарий