반응형
에러관련 함수프로시저
아래는 변수바꾸기 팁
MakeErrMag는 함수프로시져
프로시저 수정
USE Pubs
IF object_id('usp_jobsUpdate') IS NOT NULL -- 컨트롤 + H눌러서 이름 한꺼번에 바꾸기
DROP PROC usp_jobsUpdate
GO
CREATE PROC usp_jobsUpdate (
@job_id smallint --주 키
, @job_desc varchar(50) = NULL -- 디폴트값 NULL
, @min_lvl tinyint = NULL -- 디폴트값 NULL
, @max_lvl tinyint = NULL -- 디폴트값 NULL
)
AS
BEGIN TRAN
DECLARE @ERR int
IF @job_desc IS NOT NULL -- job_desc 가 NOT NULL 이면 BEGIN END 실행
BEGIN
UPDATE jobs -- jobs 테이블에서 업데이트한다
SET job_desc = @job_desc -- set job_desc = @ job_desc 로 수정한다
WHERE job_id = @job_id --
SET @ERR = @@ERROR -- 에러가 나면 변수 @err에 넣는다
IF @ERR <> 0 GOTO ERROR -- 에러나면 GOT Error 로 간다
END
IF @min_lvl IS NOT NULL -- 널이아닐때 BEGIN END 시작
BEGIN
UPDATE jobs
SET min_lvl = @min_lvl
WHERE job_id = @job_id
SET @ERR = @@ERROR -- 에러가 나면 변수 @err에 넣는다
IF @ERR <> 0 GOTO ERROR -- 에러나면 GOT Error 로 간다
END
IF @max_lvl IS NOT NULL -- 널이아닐때 BEGIN END 시작
BEGIN
UPDATE jobs
SET max_lvl = @max_lvl
WHERE job_id = @job_id
SET @ERR = @@ERROR -- 에러가 나면 변수 @err에 넣는다
IF @ERR <> 0 GOTO ERROR -- 에러나면 GOT Error 로 간다
END
COMMIT TRAN -- 에러나서 GOTO error 안가면 커밋한다
RETURN
ERROR: -- GOTO ERROR
DECLARE @error_msg nvarchar(400)
SET @error_msg = dbo.sfn_MakeErrMsg('usp_jobsUpdate', @ERR, DEFAULT)
-- MakeErrMag는 함수프로시져
RAISERROR( @error_msg, 16, 1 )
ROLLBACK TRAN
GO
업데이트 확인
SELECT * FROM jobs ORDER BY job_id DESC
EXEC usp_jobsUpdate 17, '안녕하세요 전광식',200 ,250 -- job_id, job_desc , min_lv1 , max_lv1 4개변수입력
프로시저 삭제문
USE Pubs
IF object_id('usp_jobsDelete') IS NOT NULL
DROP PROC usp_jobsDelete
GO
CREATE PROC usp_jobsDelete (
@job_id smallint -- 주 키 -- 주키만 입력
)
AS
BEGIN TRAN
DECLARE @ERR int
DELETE jobs
WHERE job_id = @job_id
SET @ERR = @@ERROR
IF @ERR <> 0 GOTO ERROR
COMMIT TRAN
RETURN
ERROR:
DECLARE @error_msg nvarchar(400)
SET @error_msg = dbo.sfn_MakeErrMsg('usp_jobsDelete', @ERR, DEFAULT)
-- MakeErrMag는 함수프로시져
RAISERROR( @error_msg, 16, 1 )
ROLLBACK TRAN
GO
SELECT * FROM jobs ORDER BY job_id DESC
EXEC usp_jobsDelete 22
프로시저 셀렉트
USE Pubs -- 프로시저가 2개입니다 SELECT는 BEGIN TRAN이없다
IF OBJECT_ID('usp_JobsSelectAll') IS NOT NULL
DROP PROC usp_JobsSelectAll
GO
CREATE PROC usp_JobsSelectAll
AS
SELECT *
FROM jobs
ORDER BY job_id
GO
IF OBJECT_ID('usp_JobsSelectARow') IS NOT NULL
DROP PROC usp_JobsSelectARow
GO
CREATE PROC usp_JobsSelectARow (
@job_id smallint -- PK 값을 받는다
)AS
SELECT *
FROM jobs
WHERE job_id = @job_id
GO
SELECT * FROM jobs order by job_id DESC
EXEC usp_JobsSelectARow 25
EXEC usp_JobsSelectAll
'Database > MS-SQL' 카테고리의 다른 글
DB 커서 (0) | 2008.10.17 |
---|---|
SELECT 문과 함수사용 (0) | 2008.10.17 |
DB 사용자정의 함수기본 사용자정의함수 예제 (0) | 2008.10.16 |
DB 프로시저 묶기 INS(삽입), UPD(수정), DEL(삭제), SEL(전체), SEA(하나) (0) | 2008.10.16 |
DB 저장프로시저 연습 프로시저 INSERT 문 (0) | 2008.10.15 |
저장프로시저 예제 (0) | 2008.10.14 |
쿼리 교도소 탈출하기 (0) | 2008.10.14 |
저장프로시저와 사용자 지정함수 사용예 (0) | 2008.10.14 |