Относительно хранимой процедуры - PullRequest
0 голосов
/ 06 июня 2019

Я новичок в хранимой процедуре.Я хочу присвоить значения, возвращаемые из инструкции SELECT, в переменную.Тип данных возвращаемых значений - Числовой (18,3), и около 200 строк выводятся.Можно ли назначить все эти значения в переменной?Если нет, то что нужно сделать, использовать эти значения?

GO
CREATE PROCEDURE SMSBRegisCharge

@balance numeric(18,3)
AS

@balance = Select (dbo.GetAvailBalAmt(acc, 0)/100) from SMSCIF 
           where (dbo.GetAvailBalAmt(acc,0)/100) > 100;

Ожидаемый результат.

14909.7000000
103203.4100000
3826.8700000
131222.6000000
198.9900000
4726.7800000
514423.8000000
542.7600000
16529.1000000
379.8100000
41442.7200000
337072.2700000
39056.4700000
199620.2100000

1 Ответ

0 голосов
/ 06 июня 2019

Исходя из синтаксиса вопроса, я предполагаю, что вы используете SQL Server.

Вы можете назначить одиночное значение непосредственно в SELECT:

select @balance = dbo.GetAvailBalAmt(acc, 0) / 100
from SMSCIF
where (dbo.GetAvailBalAmt(acc,0)/100) > 100;

Вы также можете использовать подзапрос с set:

set @balance = (Select @balance = dbo.GetAvailBalAmt(acc, 0) / 100
                from SMSCIF
                where (dbo.GetAvailBalAmt(acc,0)/100) > 100
               );

Однако нельзя присвоить несколько значений переменной. Вы можете создать временную таблицу или табличную переменную:

объявление таблицы @balances (баланс int); - или независимо от типа:

insert into @balances (balance)
    select dbo.GetAvailBalAmt(acc, 0) / 100
    from SMSCIF
    where (dbo.GetAvailBalAmt(acc,0)/100) > 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...