Использовать столбцы таблицы в команде хранимой процедуры Exec SQL Server - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть команда:

exec [Database].[dbo].DepartmentChangeLevel , Department, Date, Level;

В настоящее время я указываю значения вручную и явно так:

 exec [Database].[dbo].DepartmentChangeLevel , 'Catering', '20180101 08:01:00', 3;

Однако я хочу запустить ту же команду и использовать значения изтаблица - вот так:

exec [Database].[dbo].DepartmentChangeLevel 
     select 
         [Department], [Date], [Level]
     from
         [Database].[dbo].[DepartmentChange] 

Я получаю сообщение об ошибке:

Ожидается, что параметр @department не указан

Пожалуйста, помогите

1 Ответ

1 голос
/ 20 сентября 2019

Вместо этого вы можете использовать Курсор:

Создайте Курсор на своей таблице и передайте все три столбца в три переменные и выполните proc в курсоре.

Пример:

    declare db_cursor cursor 

    for select 
             [Department], [Date], [Level]
         from
             [Database].[dbo].[DepartmentChange];

    declare @department int --your column data type
            ,@date datetime --your column data type
            ,@level varchar(10) --your column data type

    OPEN db_cursor;

    FETCH NEXT FROM db_cursor INTO @department, @date, @level;

    WHILE @@FETCH_STATUS = 0  

    BEGIN  
        exec [Database].[dbo].DepartmentChangeLevel @department, @date, @level;
        DELETE FROM [Database].[dbo].DepartmentChangeLevel ---or you can store values from DepartmentChangeLevel table into temporary table  then delete those values from temporary table
            WHERE [Department]=@department
            and [Date]=@date
            and [Level]=@level

    FETCH NEXT FROM db_cursor INTO @department,@date, @level

    END

    CLOSE db_cursor;
    DEALLOCATE db_cursor;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...