Pregunta

Im tratando de obtener el valor de BrandID en una mesa y añadirlo a otra mesa. Pero no puedo conseguir que funcione. Alguien sabe hacerlo bien?

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
¿Fue útil?

Solución

¿Qué está pasando mal con lo que tienes? ¿Qué error se puede conseguir, o qué resultado hacer o no se obtiene que no coincide con sus expectativas?

puedo ver los siguientes problemas con que la SP, que puede o no puede estar relacionado con su problema:

  • Usted tiene una ) extraña después de @BrandName en su SELECT (al final)
  • No está configurando @CategoryID o @BrandName a cualquier cosa (que son variables locales, pero se hacen los valores no asigna a ellos)

Editar En respuesta a tu comentario: El error está diciendo que usted no ha declarado ninguna parámetros para el SP (y no lo ha hecho), pero se llama con parámetros. Sobre la base de su respuesta sobre @CategoryID, supongo que quería que fuera un parámetro en lugar de una variable local. Prueba esto:

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

A continuación, llamaría a esto como esto:

EXEC AddBrand 'Gucci', 23

... suponiendo que el nombre de la marca fue 'Gucci' y la categoría ID fue de 23.

Otros consejos

En SQL 2012 (y tal vez ya en 2005), usted debe hacer esto:

EXEC AddBrand @BrandName = 'Gucci', @CategoryId = 23

Ninguno de los métodos anteriores trabajó para mí, así que lo pongo como lo hice

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top