Как объявить переменную в SQL Server и использовать его в той же Хранимой процедуре

Я пытаюсь получить значение от BrandID в одной таблице и добавить его к другой таблице. Но я не могу заставить это работать. Кто-либо знает, как сделать это право?

CREATE PROCEDURE AddBrand
AS

DECLARE 
@BrandName nvarchar(50),
@CategoryID int,
@BrandID int

SELECT @BrandID = BrandID FROM tblBrand 
WHERE BrandName = @BrandName

INSERT INTO tblBrandinCategory (CategoryID, BrandID) 
       VALUES (@CategoryID, @BrandID) 

RETURN
43
задан Jon Seigel 9 May 2010 в 20:26
поделиться

1 ответ

Что не так с тем, что у вас есть? Какую ошибку вы получаете, или какой результат не соответствует вашим ожиданиям?

Я вижу следующие проблемы с этим SP, которые могут иметь или не иметь отношения к вашей проблеме:

  • У вас есть посторонний ) после @BrandName в вашем SELECT (в конце)
  • Вы не устанавливаете @CategoryID или @BrandName где угодно (это локальные переменные, но вы не присваиваете им значения)

Edit Ответ на ваш комментарий: Ошибка говорит вам, что у вас нет t объявил любые параметры для SP (а у вас их нет), но вы вызвали его с параметрами. Основываясь на вашем ответе о @CategoryID , я предполагаю, что вы хотели, чтобы это был параметр, а не локальная переменная. Попробуйте следующее:

CREATE PROCEDURE AddBrand
   @BrandName nvarchar(50),
   @CategoryID int
AS
BEGIN
   DECLARE @BrandID int

   SELECT @BrandID = BrandID FROM tblBrand WHERE BrandName = @BrandName

   INSERT INTO tblBrandinCategory (CategoryID, BrandID) VALUES (@CategoryID, @BrandID)
END

Затем вы бы назвали это так:

EXEC AddBrand 'Gucci', 23

... предполагая, что торговая марка была «Gucci», а идентификатор категории - 23.

44
ответ дан 26 November 2019 в 23:07
поделиться
Другие вопросы по тегам:

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