Ich versuche, den Wert von BrandID in einer Tabelle abzurufen und ihn einer anderen Tabelle hinzuzufügen. Aber ich kann es nicht zum Laufen bringen. Weiß jemand, wie man es richtig macht?
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
Was ist los mit dem, was du hast? Welchen Fehler bekommst du oder welches Ergebnis entspricht nicht deinen Erwartungen?
Ich kann die folgenden Probleme mit diesem SP sehen, die sich möglicherweise auf Ihr Problem beziehen:
)
nach dem @BrandName
in Ihrer SELECT
(am Ende)@CategoryID
oder @BrandName
nicht auf irgendwo anders (sie sind lokale Variablen, aber Sie weisen ihnen keine Werte zu). Edit Antwort auf Ihren Kommentar: Der Fehler weist darauf hin, dass Sie für SP keine parameters deklariert haben (und Sie nicht), aber Sie haben es mit Parametern aufgerufen. Basierend auf Ihrer Antwort zu @CategoryID
möchte ich, dass Sie einen Parameter anstelle einer lokalen Variablen haben wollten. Versuche dies:
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
Sie würden das dann so nennen:
EXEC AddBrand 'Gucci', 23
... unter der Annahme, dass der Markenname 'Gucci' und die ID der Kategorie 23 war.
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
In SQL 2012 (und vielleicht schon 2005) sollten Sie Folgendes tun
EXEC AddBrand @BrandName = 'Gucci', @CategoryId = 23
Keine der oben genannten Methoden hat für mich funktioniert, also poste ich so wie ich
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$$