Как объявить массив в Хранимой процедуре SQL Server MS?

От личного опыта svn был бы моей рекомендацией. Можно даже использовать сервис как Бобовый стебель , который предлагает бесплатные учетные записи (с пределами, очевидно, но достаточный для любого небольшого проекта) для тестирования вод. Но поскольку другие сказали, мерзавец выше и вероятен стоящий изучения.

81
задан Some developer 15 October 2018 в 14:00
поделиться

3 ответа

Вы можете объявить табличную переменную (Объявление переменной типа table):

declare @MonthsSale table(monthnr int)
insert into @MonthsSale (monthnr) values (1)
insert into @MonthsSale (monthnr) values (2)
....

Вы можете добавлять дополнительные столбцы по своему усмотрению:

declare @MonthsSale table(monthnr int, totalsales tinyint)

Вы можете обновлять табличную переменную, как любую другую таблицу :

update m
set m.TotalSales = sum(s.SalesValue)
from @MonthsSale m
left join Sales s on month(s.SalesDt) = m.MonthNr
137
ответ дан 24 November 2019 в 09:34
поделиться

Есть ли причина, по которой вы не используете табличную переменную и агрегатный оператор SUM вместо курсора? SQL отлично справляется с операциями, ориентированными на наборы. В 99,87% случаев, когда вы обнаруживаете, что используете курсор, есть более эффективная альтернатива, ориентированная на набор:

declare @MonthsSale table
(
MonthNumber int,
MonthName varchar(9),
MonthSale decimal(18,2)
)

insert into @MonthsSale
select
    1, 'January', 100.00
union select    
    2, 'February', 200.00
union select    
    3, 'March', 300.00
union select    
    4, 'April', 400.00
union select    
    5, 'May', 500.00
union select    
    6, 'June', 600.00
union select    
    7, 'July', 700.00
union select    
    8, 'August', 800.00
union select    
    9, 'September', 900.00
union select    
    10, 'October', 1000.00
union select    
    11, 'November', 1100.00
union select    
    12, 'December', 1200.00

select * from @MonthsSale   
select SUM(MonthSale) as [TotalSales] from @MonthsSale
26
ответ дан 24 November 2019 в 09:34
поделиться

T-SQL не поддерживает массивы, о которых я знаю.

Какая у вас структура таблицы? Вероятно, вы могли бы разработать запрос, который будет делать это вместо этого:

select
month,
sum(sales)
from sales_table
group by month
order by month
8
ответ дан 24 November 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: