Overview : SQL Server에서 저장 프로시저를 작성하여 RETURN
값을 반환하는 방법
QL Server에서 저장 프로시저를 작성하여 RETURN
값을 반환하는 방법을 보여드리겠습니다. 이 저장 프로시저는 예를 들어, 데이터베이스의 업데이트 작업을 수행하고 성공 또는 실패에 따라 rtn
값을 반환합니다.
아래는 간단한 예제입니다:
1. 저장 프로시저 샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
CREATE PROCEDURE dbo.Tasf_TktNo_Update @TktNo NVARCHAR(13), -- 티켓 번호 @NewValue NVARCHAR(100) -- 업데이트할 새로운 값 AS BEGIN -- 트랜잭션 시작 BEGIN TRY BEGIN TRANSACTION; -- 데이터 업데이트 UPDATE TicketTable SET ColumnName = @NewValue WHERE TicketNo = @TktNo; -- 업데이트 성공 시 영향 받은 행의 수를 체크 IF @@ROWCOUNT > 0 BEGIN -- 성공 시 1 반환 COMMIT TRANSACTION; RETURN 1; END ELSE BEGIN -- 업데이트할 행이 없으면 0 반환 ROLLBACK TRANSACTION; RETURN 0; END END TRY BEGIN CATCH -- 에러 발생 시 트랜잭션 롤백 ROLLBACK TRANSACTION; -- 오류 발생 시 -1 반환 RETURN -1; END CATCH END |
2. 설명
- 매개변수
@TktNo
: 업데이트할 티켓 번호.@NewValue
: 업데이트할 새로운 값.
- 로직
TicketTable
이라는 테이블에서 주어진TicketNo
에 해당하는 값을 업데이트합니다.- 업데이트된 행이 있으면
@@ROWCOUNT
가 0보다 큽니다. 이 경우1
을 반환합니다. - 업데이트할 행이 없으면
0
을 반환합니다. - 예외가 발생하면 트랜잭션을 롤백하고
-1
을 반환합니다.
3. C#에서 호출 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using (SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand("dbo.Tasf_TktNo_Update", conn); cmd.CommandType = CommandType.StoredProcedure; // 파라미터 설정 cmd.Parameters.AddWithValue("@TktNo", "1234567890123"); cmd.Parameters.AddWithValue("@NewValue", "Updated Value"); // 반환값 받을 파라미터 설정 SqlParameter returnValue = new SqlParameter(); returnValue.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(returnValue); conn.Open(); cmd.ExecuteNonQuery(); // 반환값 확인 int rtn = (int)returnValue.Value; if (rtn == 1) { Console.WriteLine("업데이트 성공"); } else if (rtn == 0) { Console.WriteLine("업데이트할 행이 없음"); } else if (rtn == -1) { Console.WriteLine("업데이트 중 오류 발생"); } } |
4. 설명
- C# 코드에서
SqlParameter
를 사용하여 저장 프로시저의 반환 값을 받습니다. - 저장 프로시저가 실행된 후
returnValue.Value
에서 반환된 값을 확인할 수 있습니다.1
: 성공적으로 업데이트됨.0
: 업데이트할 행이 없음.-1
: 오류가 발생함.
이 방식으로 저장 프로시저에서 작업의 성공, 실패, 또는 특정 상황에 따라 반환 값을 설정할 수 있습니다.