ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 저장 프로시저 수정문 삭제문 셀렉트문
    Database/MS-SQL 2008. 10. 16. 10:34
    반응형
     

    프로시저 관련 파일 프로시저.zip문을 조금 수정해야함 오타있음


                                                   에러관련  함수프로시저 



    아래는 변수바꾸기 팁



    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


















    반응형

    댓글

Designed by Tistory.