투케이2K

79. (TWOK/UTIL) [Mssql/DB] 프로시저 (PROCEDURE) - input , out (select msg , select cursor) 본문

투케이2K 유틸파일

79. (TWOK/UTIL) [Mssql/DB] 프로시저 (PROCEDURE) - input , out (select msg , select cursor)

투케이2K 2022. 10. 18. 16:48

[설 명]

프로그램 : Mssql / DB

설 명 : 프로시저 (PROCEDURE) - input , out (select msg , select cursor)

 

[소스 코드]

/***************************************************************/


--CREATE PROCEDURE USER_MSG_PROC -- [생성]
ALTER PROCEDURE USER_MSG_PROC -- [수정]
(
	@IN_NAME NVARCHAR(100), -- [인풋 : 이름]
	@IN_AGE NVARCHAR(100) -- [인풋 : 나이]
)


/***************************************************************
설명 - 이름과 나이를 인풋값으로 받아서 해당 조건에 만족하는 사용자 정보 확인 실시
---------------------------------------------------------------
프로시저 생성 조회 : sp_helptext 'dbo.USER_MSG_PROC'
---------------------------------------------------------------
프로시저 호출 : 

-- [변수 선언]
DECLARE @IN_NAME NVARCHAR(100);
DECLARE @IN_AGE  NVARCHAR(100);


-- [인풋 값 대입 실시]
SET @IN_NAME = '홍길동';
SET @IN_AGE = '50';
 

-- [프로시저 호출]
EXEC USER_MSG_PROC @IN_NAME, @IN_AGE;

---------------------------------------------------------------              
프로시저 삭제 : DROP PROCEDURE USER_MSG_PROC
***************************************************************/  


AS


/**************** [프로시저 전역 변수 선언 실시] ***************/
DECLARE @OUT_MSG NVARCHAR(500);
DECLARE @V_STEP NVARCHAR(100);
DECLARE @V_DATE NVARCHAR(100);


/************** [프로시저 동작 쿼리문 작성 실시] ***************/
BEGIN TRY

	/*=========================================================*/

	-- [로직 : 스텝 저장]
	SET @V_STEP = '1';


	-- [프로시저 수행 날짜 및 시간 확인]
	SET @V_DATE = CONVERT(CHAR(19), getDate(), 20);

	/*=========================================================*/

	-- [로직 : 스텝 저장]
	SET @V_STEP = '2';


	-- [사전 인풋 데이터 체크 수행 실시]
	IF LEN(TRIM(@IN_NAME)) = 0 OR TRIM(@IN_NAME) = '' OR LEN(TRIM(@IN_AGE)) = 0 OR TRIM(@IN_AGE) = ''
	BEGIN    

		-- [리턴 메시지 출력]
		SET @OUT_MSG = 'N: 인풋 데이터 값을 확인해 주세요. [STEP = ' + @V_STEP + '] ' + '[' + @V_DATE + ']';
		SELECT @OUT_MSG AS OUT_MSG;
		PRINT '========================================='
		PRINT '@OUT_MSG : ' + @OUT_MSG
		PRINT '========================================='


		-- [리턴 테이블 반환]
		SELECT top 0 *		
			FROM TEST_USER;


		-- [리턴 수행 : RETURN 값에는 정수만 가능]	
		RETURN (0);

	END

	/*=========================================================*/

	-- [로직 : 스텝 저장]
	SET @V_STEP = '3';


	-- [리턴 메시지 출력]
	SET @OUT_MSG = 'Y: 정상 처리 되었습니다. [STEP = ' + @V_STEP + '] ' + '[' + @V_DATE + ']';
	SELECT @OUT_MSG AS OUT_MSG;
	PRINT '========================================='
	PRINT '@OUT_MSG : ' + @OUT_MSG
	PRINT '========================================='


	-- [인풋으로 들어온 데이터 값에 맞게 조회 수행 실시]
	SELECT *
		FROM TEST_USER	    
	WHERE T_NAME = @IN_NAME
		AND T_AGE = @IN_AGE;


	-- [리턴 수행 : RETURN 값에는 정수만 가능]	
	RETURN (0);

	/*=========================================================*/

END TRY


/************** [프로시저 예외 발생 처리 실시] ***************/
BEGIN CATCH
	-- [메시지 출력]
	SET @OUT_MSG = 'N: 예외 상황이 발생했습니다. [STEP = ' + @V_STEP + '] ' + '[' + @V_DATE + ']';
	SELECT @OUT_MSG AS OUT_MSG;
	PRINT '========================================='
	PRINT '@OUT_MSG : ' + @OUT_MSG
	PRINT '========================================='


	-- [리턴 테이블 반환]
	SELECT top 0 *
		FROM TEST_USER;


	-- [리턴 수행 : RETURN 값에는 정수만 가능]
	RETURN (0);
END CATCH


/**************** [프로시저 종료 처리 부분] ******************/
GO
/*************************************************************/

 

반응형
Comments