2010-05-08 16 views
24

Im tratando de obtener el valor de BrandID en una tabla y agregarlo a otra tabla. Pero no puedo hacer que funcione. Alguien sabe cómo hacerlo bien?Cómo declarar una variable en SQL Server y usarla en el mismo procedimiento almacenado

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 

Respuesta

24

¿Qué pasa con lo que tienes? ¿Qué error obtienes, o qué resultado obtienes o no, que no coincide con tus 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 @BrandName en su SELECT (al final)
  • Usted' re no establecer o @CategoryID@BrandName a cualquier cosa en cualquier lugar (son variables locales, pero no asigna valores a ellos)

Editar Respondiendo a su comentario: El error le indica que no ha declarado ningún parámetro para el SP (y no lo ha hecho), pero lo ha llamado con parámetros. Según tu respuesta sobre @CategoryID, supongo que querías 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 esto como esto:

EXEC AddBrand 'Gucci', 23 

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

+0

I Obtenga el siguiente error: El procedimiento AddBrand no tiene parámetros y se proporcionaron argumentos. he corregido el ")" No sé lo que quieres decir acerca de la CategoryID, que tienen un valor en mi página aspx que traigo en el SP y me gustaría añadir a tblBrandinCategory – Nicklas

+1

@ispostback: Gracias por la errata correcciones. No, '()' no se utilizan alrededor de las declaraciones de parámetros en ['CREATE PROCEDURE'] (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact- sql). –

1

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

EXEC AddBrand @BrandName = 'Gucci', @CategoryId = 23 
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 
Cuestiones relacionadas