it-source

SQL Server에서 변수를 선언하고 동일한 저장 프로시저에서 사용하는 방법

criticalcode 2023. 9. 8. 21:34
반응형

SQL Server에서 변수를 선언하고 동일한 저장 프로시저에서 사용하는 방법

브랜드에서 가치를 얻고자 합니다.한 테이블에 ID를 추가하고 다른 테이블에 추가합니다.하지만 작동이 안 돼요.제대로 할 줄 아는 사람?

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

해당 SP와 관련하여 다음과 같은 문제가 발생할 수 있으며, 이는 문제와 관련이 있을 수도 있고 그렇지 않을 수도 있습니다.

  • 당신은 연관성이 없는 사람입니다.)끝나고@BrandName당신의SELECT(마지막에)
  • 당신은 설정을 안하고 있습니다.@CategoryID아니면@BrandName(지역 변수이지만 해당 변수에 값을 할당하지 않음)

당신이 한 댓글에서 당신은 그 말을 고친 후에)오류가 발생합니다.

프로시저 AddBrand에 매개 변수가 없고 인수가 제공되었습니다.

SP에 대한 파라미터를 선언하지 않았지만 파라미터를 사용하여 호출했다는 것을 의미합니다.에 대한 당신의 답변에 근거하여.@CategoryID, 지역 변수가 아닌 모수가 되기를 원하신 것 같습니다.시도해 보기:

CREATE PROCEDURE AddBrand
   @BrandName nvarchar(50), -- These are the
   @CategoryID int          -- parameter declarations
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

또는 이 항목:

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

...브랜드 이름을 'Gucci', 카테고리 ID를 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

sql 2012(그리고 아마도 2005년까지)에서는 다음 작업을 수행해야 합니다.

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

위의 방법들 중 어떤 것도 저에게 효과가 없어서 제가 했던 방법을 올립니다.

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$$

언급URL : https://stackoverflow.com/questions/2793379/how-to-declare-a-variable-in-sql-server-and-use-it-in-the-same-stored-procedure

반응형