Понимание простой хранимой процедуры: перемещение вывода в переменную - PullRequest
0 голосов
/ 24 июня 2011

Я надеюсь, что смогу получить некоторую помощь в понимании простой хранимой процедуры.По сути, я хочу сохранить выходные данные оператора select в переменной, а затем распечатать значение переменной.

Я нашел очень похожий вопрос здесь: Простой вопрос о хранимой процедуре

И код выглядит следующим образом:

CREATE PROCEDURE ReturnPrice 
   @carID int,
   @price decimal(18,2) output 
AS 
   SELECT 
      @price = Price 
   FROM 
      dbo.Cars 
   WHERE 
      CarID = @carID 

У меня такой вопрос: как мне получить значение @carID?

Если я попробую это:

declare @carOutput varchar(50)
exec carInformation, '@carOutput varchar(50) output',  @carOutput output

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

Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near ','.

Спасибо!

1 Ответ

5 голосов
/ 24 июня 2011
exec carInformation, '@carOutput varchar(50) output',  @carOutput output
                   ^bad

exec carInformation  '@carOutput varchar(50) output',  @carOutput output
                   ^good

но также '@carOutput varchar(50) output' должно быть целым числом, но вы передаете строку

вам нужно, чтобы вызывающее приложение уже знало значение @carID, и процедура использует это значение для возврата цены.

так что попробуйте что-то вроде:

DECLARE @CarID_x int
       ,@Price_x decimal(18,2)

SET @CarID_x=123

EXEC ReturnPrice @CarID, @Price_x OUTPUT 
PRINT @Price_x

или

DECLARE @Price_x decimal(18,2)

EXEC ReturnPrice 123, @Price_x OUTPUT 
PRINT @Price_x

оба приведенных выше примера кода вернут значение столбца Price для строки dbo.Cars со значением CarID 123.

Если вы не знаете CarID, запустите:

SELECT 
      CarID, Price 
   FROM dbo.Cars 

и вы получите результирующий набор, содержащий все цены на все автомобили.

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