2010-05-08 4 views
24

한 테이블에서 BrandID의 값을 가져 와서 다른 테이블에 추가하려고합니다. 그러나 나는 그것을 작동시킬 수 없다. 아무도 제대로하는 법을 알고 있습니까?SQL Server에서 변수를 선언하고 동일한 저장 프로 시저에서 사용하는 방법

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 

답변

24

무엇이 잘못 되었나요? 어떤 오류가 발생합니까, 아니면 어떤 결과가 기대치와 일치하지 않습니까?

내가 또는 문제와 관련하지 않을 수 SP, 다음과 같은 문제를 볼 수 있습니다 (말에) 당신의 SELECT@BrandName 후 외부 )

  • 당신을 ' 어디서든 아무것도 @CategoryID 또는 @BrandName을 설정하지 않는 재 (그들은 지역 변수,하지만 당신은 그들에게 값을 할당하지 않음)

편집 귀하의 의견에 응답 :이 오류는 귀하가 매개 변수를 SP에 대해으로 선언하지 않았지만 매개 변수로 호출했다고 말합니다. @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는 SQL 2012 년 23

+0

I을 다음 오류가 발생합니다. 프로 시저 AddBrand 매개 변수가없고 인수가 제공되었습니다. 오타 주셔서 감사합니다 : 는 내가 ")" 난 당신이 카테고리 ID에 대해 무슨 뜻인지, 내가 SP에 가져다 tblBrandinCategory – Nicklas

+1

@ispostback에 추가 할 내 aspx 페이지에 값을 해달라고을 수정 수정. 아니요,'()'은 [CREATE PROCEDURE']의 매개 변수 선언에서 사용되지 않습니다 (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact- SQL). –

1

이었다 가정 (어쩌면까지 다시 2005 등), 당신은이 작업을 수행해야합니다

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 
관련 문제