J'essaie d'obtenir la valeur de BrandID dans une table et de l'ajouter à une autre table. Mais je ne peux pas le faire fonctionner. Quelqu'un sait comment le faire correctement?
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
Qu'est-ce qui ne va pas avec ce que vous avez? Quelle erreur avez-vous, ou quel résultat obtenez-vous ou obtenez-vous qui ne correspond pas à vos attentes?
Je peux voir les problèmes suivants avec ce SP, qui peuvent ou non être liés à votre problème:
)
superflu après le @BrandName
dans votre SELECT
(à la fin)@CategoryID
ni @BrandName
nulle part (ce sont des variables locales, mais vous ne leur attribuez pas de valeurs) Edit En réponse à votre commentaire: L'erreur vous indique que vous n'avez déclaré aucun parameters pour le SP (et vous ne l'avez pas encore fait), mais vous l'avez appelé avec des paramètres. D'après votre réponse à propos de @CategoryID
, j'imagine que vous vouliez que ce soit un paramètre plutôt qu'une variable locale. Essaye ça:
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
Vous appelleriez alors ceci comme ceci:
EXEC AddBrand 'Gucci', 23
... en supposant que le nom de marque était 'Gucci' et que la catégorie ID était 23.
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
Dans sql 2012 (et peut-être aussi loin que 2005), vous devriez faire ceci:
EXEC AddBrand @BrandName = 'Gucci', @CategoryId = 23
Aucune des méthodes ci-dessus n'a fonctionné pour moi, donc je poste comme je l'ai fait
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$$