반응형


작성일 : 2008.06.02(2008.06.03 완료)

작성자 : 유일환

  : SQL Server의 SQL 작성 자동화 프로시저

(첨부파일로 보시면 좀 더 깨끗하게 보실 수 있습니다.)

 

안녕하세요. 유일환입니다.

오늘은 그전에 만들어 놓은것을 약간 정리해서 올려봅니다.

만든지는 작년여름쯤... 내용은, SQL문, 프로시저문 자동 작성해주는 프로시저정도라고 할까요..

컬럼이 많은 테이블에 대한 INSERT문, SELECT문을 만들다 보면, 손가락도 저리고 귀찮은 적이 많이 있죠.

이런 경우, 자동화시키면 편하겠다란 생각들을 많이 하셨을 겁니다.

그리고, 개발 2, 3년차 정도 되면 이러한 자동화 프로그램을 만드시는 분들이 굉장히 많이 있습니다.

그만큼 일반적인것이라 별로 관심들이 안가실수도 있겠지만..

제가 만든건,, 프로시저를 이용하는 자동화 방법입니다.

SQL실행창에서 dev_usp_MakeInsertProc 'Sale'이라고 입력해서 실행을 하는것이죠.

 

 EXEC dev_usp_MakeInsertProc 'Sale'

이와 같은 SQL을 실행하면 SQL결과창에 다음과 같은 결과가 나오는 것이죠.

 SQL_Text
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------
-- CREATEOR  :
-- CREATE DATE : 2008-06-04
-- ALTER DESC : YYYY-MM-DD(ALTER USER) : DESC
-- DESC   :
----------------------------------------------------------------------------
CREATE PROC dbo.usp_Sale_Insert
(
  @SaleSeq numeric(18,0)
  ,@SaleYMD nchar(8)
  ,@ShopID int
  ,@PRodCD nvarchar(10)
  ,@ModelCD nvarchar(30)
  ,@SalePrice numeric(18,2)
  ,@RegiDT datetime
  ,@R_ErrorCD nvarchar(200) OUTPUT
) as
  DECLARE @Error int

  INSERT INTO Sale
    (
    SaleSeq
    ,SaleYMD
    ,ShopID
    ,PRodCD
    ,ModelCD
    ,SalePrice
    ,RegiDT
    )
  VALUES (
    @SaleSeq
    ,@SaleYMD
    ,@ShopID
    ,@PRodCD
    ,@ModelCD
    ,@SalePrice
    ,@RegiDT
    )

  SET @Error = @@ERROR
  IF @Error <> 0
  BEGIN
    SET @R_ErrorCD = '9999'
    RETURN
  END

go

 

그 다음 결과창의 SQL들을 카피해서 실행시키면 되는 것입니다.

 

전체적인 구조는 다음과 같습니다.

 

쓸데없이 복잡해 보이는군요..^^;;(실제로는 단지 프로시저만 실행하면 되는것인데..)

이와 같은 자동화 프로시저를 사용하기 위해서는 자신이 개발하는 시스템에 위의 프로시저들과,

위의 프로시저들이 사용하는 2개의 테이블을 만들어 주셔야 합니다.

첨부된 파일중 20080603_자동화프로시저.sql을 자신이 개발하는 데이터베이스 내에서 실행을 합니다.

(개발서버에서 먼저 해보시길, 잘못되서 사용중인 테이블이나 프로시저와 이름이 동일해서 날려버리는 경우가

있을 수 있으니까요.)

그러면 필요한 테이블 2개와 위에 열거된 프로시저들이 자동적으로 만들어집니다.

그 후에는 자동화프로시저.ppt를 참조하셔서 프로시저를 실행해 보시면, 결과창에,

SQL문과 프로시저의 기본틀을 만드실 수 있습니다.

이 자동화에는 제가 생각하는 단점들이 있습니다.

1.각 데이터베이스 별로 테이블과 프로시저를 만들어 줘야 한다.

2.자동화 저장프로시저명이 너무 길다.

3.프로시저 소스가 정리를 별로 안하고 만들어서 좀 복잡하다.

이와 같은 단점들이 있는데,,(사용하다 보면 더 많은 단점이 있을 수 있겠죠.^^)

1, 3번 단점은 고치려면,, 좀.. 많이 구찮아서..ㅡㅡ;;;

2번 단점은, 여러분들이 적당히 알기 쉬운명으로 고쳐 사용하시면 되고요..^^;;

(내부 호출되는 프로시저명까지 고치는 점을 유의)

 

이 프로시저들을 자신의 개발환경과 개발규칙에 맞도록 적당히 수정한다면,

굉장히 많은 부분을 자동화 하실 수 있으실 것입니다.

내부에서 테이블을 사용해서 SQL문을 작성하므로, 엄청 긴 양의 스크립트 역시 만들 수 있습니다.

그러므로, 개발소스의 기본틀까지 만들어 낼 수도 있겠죠.(굉장히 복잡하고 귀찮은 작업이 되겠지만요.^^)

 

사용을 해보시고 소감 올려주세요~~

미친소 수입 문제로 우리나라가 시끌버쩍하더군요.. ㅜ.ㅜ

당장 비행기 타고 날라가야 되는데..

"우리나라 국민들 화이팅"만 중국에서 외쳐 봅니다.

시위에 참가하지 못하는 제 자신이 정말 죄송할 뿐입니다...ㅜㅜ..

 

반응형

+ Recent posts