我试图从一个表中获取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
答案 0 :(得分:41)
你有什么问题?你得到了什么错误,或者你得到的结果与你的期望不符合什么?
我可以看到该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。
答案 1 :(得分:1)
在sql 2012中(可能早在2005年),你应该这样做:
EXEC AddBrand @BrandName = 'Gucci', @CategoryId = 23
答案 2 :(得分:1)
CREATE PROCEDURE AddBrand
@BrandName nvarchar(50) = null,
@CategoryID int = null,
AS
BEGIN
DECLARE @BrandID int = null
SELECT @BrandID = BrandID FROM tblBrand
WHERE BrandName = @BrandName
INSERT INTO tblBrandinCategory (CategoryID, BrandID)
VALUES (@CategoryID, @BrandID)
END
EXEC AddBrand @BrandName = 'BMW', @CategoryId = 1
答案 3 :(得分:1)
以上方法均不适用于我,因此我将按照我的方式发布
DELIMITER $$
CREATE PROCEDURE AddBrand()
BEGIN
DECLARE BrandName varchar(50);
DECLARE CategoryID,BrandID int;
SELECT BrandID = BrandID FROM tblBrand
WHERE BrandName = BrandName;
INSERT INTO tblBrandinCategory (CategoryID, BrandID)
VALUES (CategoryID, BrandID);
END$$