我试图从一个表中的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

最佳答案

你有什么问题?您会得到什么错误,或者您得到或没有得到什么结果,这些结果与您的期望不符?

我可以看到该SP的以下问题,这可能与您的问题有关,也可能与您的问题无关:

  • 您的)中的@BrandName之后有一个多余的SELECT(最后)
  • 您不会在任何地方将@CategoryID@BrandName设置为任何值(它们是局部变量,但您不为其分配值)

  • 编辑回应您的评论:该错误表明您尚未声明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”,类别ID为23。

    10-08 02:05