1つのテーブルで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には次の問題がありますが、これは問題に関連する場合と関連しない場合があります。
SELECT
の)
の後に余分な@BrandName
があります(最後に)@CategoryID
または@BrandName
をどこにも設定していません(ローカル変数ですが、値を割り当てません)編集コメントへの応答:エラーは、SPに対してparametersを宣言していないことを示しています(まだ宣言していない)。ただし、パラメータを使用して呼び出しました。 @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
...ブランド名が「グッチ」で、カテゴリIDが23であると仮定します。
上記の方法はどれも役に立たなかったので、私がやった方法を投稿しています
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$$
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
SQL 2012(およびおそらく2005年まで)では、これを行う必要があります。
EXEC AddBrand @BrandName = 'Gucci', @CategoryId = 23