[SQL] SQL 서버에서 변수로 저장 프로 시저의 출력을 반환하는 방법
SQLSQL 서버에서 변수로 저장 프로 시저의 출력을 반환하는 방법
나는 SQL Server의 저장 프로 시저를 실행하고 변수 (이 단일 값을 반환) 출력을 할당 할?
해결법
-
==============================
1.즉, 반환 할 정보의 성격에 따라 달라집니다.
즉, 반환 할 정보의 성격에 따라 달라집니다.
그것은 하나의 정수 값 인 경우에는 return 문을 사용할 수 있습니다
create proc myproc as begin return 1 end go declare @i int exec @i = myproc
이 아닌 정수 값 또는 스칼라 값의 번호가있는 경우, 당신은 출력 매개 변수를 사용할 수 있습니다
create proc myproc @a int output, @b varchar(50) output as begin select @a = 1, @b='hello' end go declare @i int, @j varchar(50) exec myproc @i output, @j output
데이터 집합을 반환하려는 경우, 당신은 삽입 간부를 사용할 수 있습니다
create proc myproc as begin select name from sysobjects end go declare @t table (name varchar(100)) insert @t (name) exec myproc
당신은 커서를 반환 할 수 있지만, 내가 예를 들어 줄 수 없다, 그래서 그건 그냥 무서운 것 :)
-
==============================
2.당신은 (만 정수형의) 정수 상태 코드를 반환하는 저장 프로 시저 내에서 return 문을 사용할 수 있습니다. 관례 적으로 0의 반환 값은 성공을 위해 사용됩니다.
당신은 (만 정수형의) 정수 상태 코드를 반환하는 저장 프로 시저 내에서 return 문을 사용할 수 있습니다. 관례 적으로 0의 반환 값은 성공을 위해 사용됩니다.
더 리턴 명시 적으로 설정되지 않으면, 저장 프로 시저의 반환 제로.
CREATE PROCEDURE GetImmediateManager @employeeID INT, @managerID INT OUTPUT AS BEGIN SELECT @managerID = ManagerID FROM HumanResources.Employee WHERE EmployeeID = @employeeID if @@rowcount = 0 -- manager not found? return 1; END
그리고 당신은이 방법을 전화 :
DECLARE @return_status int; DECLARE @managerID int; EXEC @return_status = GetImmediateManager 2, @managerID output; if @return_status = 1 print N'Immediate manager not found!'; else print N'ManagerID is ' + @managerID; go
당신은 상태 코드에만 반환 값을 사용해야합니다. 데이터를 반환하려면 출력 매개 변수를 사용해야합니다.
당신이 데이터 집합을 반환 할 경우, 입력 한 다음 커서의 출력 매개 변수를 사용합니다.
RETURN 문에 대한 자세한
-
==============================
3.제대로 작동이 코드를 사용하여
제대로 작동이 코드를 사용하여
CREATE PROCEDURE [dbo].[sp_delete_item] @ItemId int = 0 @status bit OUT AS Begin DECLARE @cnt int; DECLARE @status int =0; SET NOCOUNT OFF SELECT @cnt =COUNT(Id) from ItemTransaction where ItemId = @ItemId if(@cnt = 1) Begin return @status; End else Begin SET @status =1; return @status; End END
SP를 실행
DECLARE @statuss bit; EXECUTE [dbo].[sp_delete_item] 6, @statuss output; PRINT @statuss;
-
==============================
4.proc 디렉토리에서 return 문으로, 나는 임시 변수를 할당하고 다른 저장 프로 시저에 전달할 필요가 있었다. 값은 벌금을 할당하지만 매개 변수로 전달할 때, 그것은 가치를 잃어버린했다. 나는 (2008 SQL) 임시 테이블을 작성했고 테이블에서 변수를 설정
proc 디렉토리에서 return 문으로, 나는 임시 변수를 할당하고 다른 저장 프로 시저에 전달할 필요가 있었다. 값은 벌금을 할당하지만 매개 변수로 전달할 때, 그것은 가치를 잃어버린했다. 나는 (2008 SQL) 임시 테이블을 작성했고 테이블에서 변수를 설정
From this: declare @anID int exec @anID = dbo.StoredProc_Fetch @ID, @anotherID, @finalID exec dbo.ADifferentStoredProc @anID (no value here) To this: declare @t table(id int) declare @anID int insert into @t exec dbo.StoredProc_Fetch @ID, @anotherID, @finalID set @anID= (select Top 1 * from @t)
from https://stackoverflow.com/questions/11965269/how-to-return-the-output-of-stored-procedure-into-a-variable-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 단일 쿼리에서 여러 개의 CTE (0) | 2020.04.25 |
---|---|
[SQL] SQL 1 100에서 번호 목록을 생성하는 (0) | 2020.04.25 |
[SQL] PHP의 PDO 연 마 SQL 연결을 폐쇄해야 (0) | 2020.04.25 |
[SQL] 합니까 DB2는 "삽입 또는 업데이트"문이? (0) | 2020.04.24 |
[SQL] 어떻게 PostgreSQL의 일시적 기능을 만드는 방법? (0) | 2020.04.24 |