У меня есть хранимая процедура SQL Server для получения часов часов с часами в течение нескольких дней. Процедура использует значение кода карты для получения информации о сотруднике.Цитирование через таблицу SQL Server, запуск хранимой процедуры для строки и вывод результатов в таблицу
Что я хочу сделать, это выбрать все из CardCodes
из одной таблицы, а затем пропустить каждую запись, выполняющую хранимую процедуру, а затем составить таблицу с результатами каждого из них. поэтому к концу будет одна таблица, в которой каждый сотрудник работал бы раз.
запрос для получения списка CardCodes
:
SELECT
CardCode
FROM
CHINA_VISION_PubCards
создает список, как это.
007b7aaf
00cf77b6
00cf9200
00cf9f40
007B6FFB
00d398dd
00cf4673
И так далее.
Я могу запустить хранимую процедуру в SQL Server следующим образом.
EXEC [dbo].[getPast5DaysWorkedHours] @CardCode = N'007da097'
Где 007da097
является код карты сотрудника.
Это дает результат, как это:
Employee Name | CardCode | Clock No | Date | Seconds | Time
Name 007da097 005718 2015.10.16 28761 07:59:21
Name 007da097 005718 2015.10.21 28991 08:03:11
Name 007da097 005718 2015.10.23 29768 08:16:08
Name 007da097 005718 2015.10.28 29441 08:10:41
повторить то, что я пытаюсь сделать: Я хочу проходной список кодов карт, и для каждого из них запустить хранимую процедуру с cardCode
значение. А затем поместите результаты каждого вызова процедуры в одну таблицу.
Лучше смените хранимую процедуру, чтобы ожидать @CardCode как TVP ([параметр оценки таблицы] (https://msdn.microsoft.com/en-us/library/bb510489.aspx)) и разрешить множественный ввод. Использование цикла для него очень неэффективно – lad2025
Как это делается? – Oisian
См. Демонстрационную версию в ссылке. Очень просто создать тип, изменить процедуру, чтобы разрешить TVP, немного изменить логику, заполнить аргумент и вызвать sp :) – lad2025