반응형
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
반응형
'it-source' 카테고리의 다른 글
마젠토 내에서 기본 AJAX 호출 사용 (0) | 2023.09.08 |
---|---|
mysql-slow.log에서 'log-message-not-using-message'를 사용하도록 설정한 경우 'information_message' 쿼리를 표시합니다. (0) | 2023.09.08 |
PowerShell로 한 번에 컴퓨터 이름 변경 및 도메인 가입 (0) | 2023.09.08 |
비밀번호 숨기기와 보기를 전환하는 방법 (0) | 2023.09.08 |
Angular2 \ Typcript에서 문자열을 날짜로 변환하는 방법? (0) | 2023.09.08 |