'(DB) MS SQL/Procedure (단계별스터디)'에 해당되는 글 13건

  1. 2017.01.27 MS SQL.PLSQL - 참고
  2. 2017.01.27 MS SQL.PLSQL - SP로부터 정보를 넘겨받는 방법
  3. 2017.01.27 MS SQL.PLSQL - 매개변수전달
  4. 2017.01.27 MS SQL.PLSQL - 실행계획
  5. 2017.01.27 MS SQL.PLSQL - 실행과정
  6. 2017.01.27 MS SQL.PLSQL - 종류
  7. 2017.01.27 MS SQL.PLSQL - 문법
  8. 2017.01.27 MS SQL.PLSQL - 문법
  9. 2017.01.27 MS SQL.PLSQL - 단점
  10. 2017.01.27 MS SQL.PLSQL - 장점

[ MS SQL.PLSQL - 참고 ]

 

1. @@Error  : T-SQL 문을 실행 후 그 오류번호 가지고 있는 Global Variable 이다. (성공시 0)

 

2. Parameter : Create   procedure      up_name

                                     @make       char(5),         

                                     @name       char(20),

                                     @id            int   ouput

                       As

                        à @id 로 값이 Return 된다.

 

3. Return Value : Return  ‘값’   à 을 하게 되면 된다

 

4.. SP는 다른 SP에서 정의된 변수들을 액세스 할 수 없다.

Posted by 농부지기
,

[ MS SQL.PLSQL - SP로부터 정보를 넘겨받는 방법 ]

 

1. SP 를 호출할때 매개변수에 값이 없을 경우 오류가 발생. 그래서   default 값을 넣어 준다.

 

1. ResultSet : PS의 Body 로 Resultset 을 받환하는 T-SQL 문을 삽입한다.일반적으로   select  문을 사용하지만 또 다른 SP 에게 다른 호출자를 삽입할 수 있다.

                      또한 몇 개의 resultset 을 하나의 SP로부터 되돌려주는 것이 가능하다. 이러한 저장 프로시저는 단순히 몇 개의 select 문을 포함하게 된다.

                      모든 resultset 에 액세스할 수 있는 RDO 같은 일부 클라이언트 데이터 액세스 방법이 있지만 그 외 다른 방법들을 단지 첫 번째 resultset 을

                      받을 수 있고 오류를 일으킬 가능성이 있음을 참고해야 한다.

 

2. Parameter : Create   procedure      up_name

                                     @make       char(5),         

                                     @name       char(20),

                                     @id            int   ouput

                       As

                        à @id 로 값이 Return 된다.

 

3. Return Value : Return  ‘값’   à 을 하게 되면 된다.

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 참고  (0) 2017.01.27
MS SQL.PLSQL - 매개변수전달  (0) 2017.01.27
MS SQL.PLSQL - 실행계획  (0) 2017.01.27
MS SQL.PLSQL - 실행과정  (0) 2017.01.27
MS SQL.PLSQL - 종류  (0) 2017.01.27
Posted by 농부지기
,

[ MS SQL.PLSQL - 매개변수전달 ]

 

- 이름을 이용한 매개변수 전달 ( passing parameters by name )  :  EXECUTE    sp_name      @model  = ‘T%’

 

- 위치를 이용한 매개변수 전달 ( passing parameters by position) :  EXCUTE   sp_name    ‘T%’

 

 

8 위치를 이용한 매개변수 전달방식이 속도가 조금 빠른다. 그러나 이름을 이요한 매개변수 전달을 추천한다.

 

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 참고  (0) 2017.01.27
MS SQL.PLSQL - SP로부터 정보를 넘겨받는 방법  (0) 2017.01.27
MS SQL.PLSQL - 실행계획  (0) 2017.01.27
MS SQL.PLSQL - 실행과정  (0) 2017.01.27
MS SQL.PLSQL - 종류  (0) 2017.01.27
Posted by 농부지기
,

[ MS SQL.PLSQL - 실행계획 ]

 

 

± 실행계획의 재사용 : 실행계획들은 잠시동안 프로시저 캐시에 남는다. 같거나 다른 몇몇 사용자가 비슷한 배치(batch) 를 사용하면 관련된 엔진은 프로시저

                                         캐시에서 실행계획과 일치하는 것을 우선 찾는다. 만약 존재하면 재사용되고, 없을 경우에는 SQL Server 는 batch 를 해서(Parse)하고

                                         컴파일 할 것이다.  ( 이 재사용으로 Parsing 등을 하지 않으므로 속도가 빠르게 된다. )

     ž 재사용 가능 쿼리 : 첫번째로, 두 번째 쿼리의 쿼리 텍스트는 캐시 내 실행계획에 의해 기술된 쿼리의 텍스트와 모든 것들이 완벽하게 동일해야 한다.

                                               (공백, 줄바꿈, 들여쓰기)

                                           두번째는 쿼리가 실행계획을 재 사용하기 위해 fully qualified database object 를 포함할 때이다.

                                                             Select *

                                                             From       db_name.dbo.tbl_name

 

    ž 매개변수화된 쿼리들 : SQL Server 디자이너들은 저장 프로시저들로 쿼리를 재 사용하지 않도록 디자인된 저장 프로시저에 대해서 쿼들의 재 사용을

                                                 향상시키기 위해서 두 가지 방법이 존재

             1. Autoparameterization : T-SQL 문장이 SQL Server 에 보내질 때 그것은 모든 상수가 매개변수로 대치될 수 있는지 여부를 결정하는 시도를 할 것이다.

                                                       같은 템플릿을 사용하는 연속되는 퀴리들은 동일한 실행계획을 다시 사용할 것이다.

                  Autoparameterization 을 하기 위해 네개의 템플릿 세트와 일치해야 한다.

                               SELECT   { @ ¦ column-list ]

                               FROM      tbl_name

                               WHERE   column-expression

                               [ORDER BY  column-list ]

 

                               INSERT   tbl_name

                               VALUES ( { constant  ¦ Null  ¦ Default }   [ , ….  ] )

 

                               UPDATE   tbl_name

                               SET            column-name  = constant

                               WHERE     column-expression

 

 

                               DELETE   tbl_name

                               WHERE     column-expression

 

                   ; Autoparameterization 이 사용될 때 쿼리를 포맷팅하는 것을 문제 삼지 않지만, 여전히 개체가 capitalization 에 있어서의 변경이나  qualified 되는

                     방법에 있어서 변경을 허용하지 않는다.

    ž속도가 빠른이유 : 현재 버전의 SQL Server 쿼리 엔진은 쿼리나 SP를 프로세스하는 가장 최고를 선택하기 위한 수많은 새로운 프로세싱 기술들과

                    비교작업을 한다. 그러므로 SP를 재 컴파일하는데 필요한 시간은 이전보다 더욱 길어졌다.

 

± Lazywriter 프로세스가 하는 일 : 실행계획을 SP 캐시로부터 제거 한다. 다음과 같은 경우에…

     1. 많은 데이터 수량의 변경시

     2. 인덱스 생성 또는 삭제시

     3. Constrainsts 가 추가 또는 변경시

     4. 인덱스의 분산 통계들의 변화시

     5. SP 또는 trigger 에서 재 컴파일하기 위해 명시적으로 SP_recompile 을 호출 하였을 때

 

     ž

* SP 의 소스코드 : syscomments system table 의 text 라는 필드에 저장 됨

                                type : varchar(8000) 이지만 smallint 로 선언될 때 저장 프로시저는 32k * 8,000 bytes = 약 250MB 이다.

 

* SP 캐시에서 내리기 : DBCC   FREEPROCCACHE

                                        SQL Server 를 재 작동

 

 

 

Posted by 농부지기
,

[ MS SQL.PLSQL - 실행과정 ]

 

 

 

1. Parsing            :  Microsoft SQL Server 명령 해석기 모듈이 처리되는 동안 첫 번째로 배치의 문법을 검사하는 과정이다. 오류가 발견

                              되지 않으면 Microsoft SQL Server 명령 해서기는 키워드, 식별자 그리고 연산자와 같은 논리적인 단위들로 수스를 나눈다. 해석기는(Parser)

                              요청된 작업의 수행 또는 소스 데이터로부터 요청된 결과 세트를 추출하기 위해 필요한 일련의 작업단계를 기술하는 내부 구조를 구축하게

                              될 것이다. Batch가 쿼리를 포함한다면 이 내부 구조는 Query tree 라고 불리고  batch 가 프로시저를 포함한다면 그것은 sequece tree 라고 불리운다.

 

2. Compilation  :  이 단계에서 sequece tree 는 실행계획을 생성하기 위해 이용된다. Optimizer module 은 정보가 소스 테이블로부터 추출되는 방법을 분석한다.

                             Optimizer module 은 가장 적은 리소스를 사용하여 가장 빠른 방법들을 찾는 방법을 시도하게 된다.(processing time). 또한 실행될 필요가  있는

                             작업의 리스트를 보충한다. (한예로 보안을 체코하고 constraints 가 샐행되는 것을 점검하고 프로세싱에서 그들이 합쳐져야 할 필요가 있다면

                             triggers 를 포함할 것이다.)  결과는 실행계획(Execution Plan)이라고 불리우는 내부 구조이다.

 

3. Execution      : 실행계획은 프로시저 캐시에 저자오디고 저장된 곳으로부터 실행된다. 실행계획에서 다른 단계들은 실행되는데 관려되는 엔진의 다른 모듈에

                            붙여진다.(DML 매니저, DDL 매니저,  SP 매니저, transaction 매니저 또는 유틸리티 매니저).

 

 

 

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 매개변수전달  (0) 2017.01.27
MS SQL.PLSQL - 실행계획  (0) 2017.01.27
MS SQL.PLSQL - 종류  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
Posted by 농부지기
,

[ MS SQL.PLSQL - 종류 ]

 

1. 사용자 정의 ( User - Defined )  SP

2. 시스템 ( System ) SP

3. 확장 ( Extended ) SP

4. 임시 ( Temporary ) SP

5. 전역임시 ( Global Temporary ) SP

6. 원격 ( Remote ) SP

 

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 실행계획  (0) 2017.01.27
MS SQL.PLSQL - 실행과정  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 단점  (0) 2017.01.27
Posted by 농부지기
,

[ MS SQL.PLSQL - 문법 ]

 

- 생성 : CREATE  PROC [ EDURE ]    procedure_name    [ ;number ]

                  [  {   @parameter          data_type    [VARYING]    [ = default  ]   [ , …… ] ]

                  [  {   @out_parameter   data_type    ouput                [ , …… ] ]

                  [   WITH   { RECOMPILE

                                       ¦ ENCRYPTION

                                       ¦ RECOMPILE,   ENCRYPTION   }         ]

                  [ FOR  REPLICATION ]

              AS

                  Declare    @var_name        data_type  [,……]

 

                  sql_statement [……..n]

 

 

- 삭제 : DROP    PROCEDURE       procedure_name

 

 

- 존재 확인 : IF    exists ( SELECT   *   FROM    SysObjects

                                          WHERE   id = object_id  ( ‘sp_name’ )

                                          AND        ObjectProperty ( ID ,   ‘IsProcedure’)  =   1  )

 

 

해법

 

- [;number] : SP이름에 추가 할 수 있는 선택적 정수.

- Encryption : SP를 생성할 때 SP의 코드를 암호화 해서 DB에 저장.   시스템관라자 조차도 암호화된 SP를 얻을 수 없다.

- For Repliation : 보통 데이터베이스가 복제되는 동안 필터로 사용되는 것으로 SQL Server 에 의해 생성된다. SP에 대한 출력 매개변수는 Cursor 데이터타입으로

                             존재 할 수 있다. 이런 경우 커서에 의해 포함된 Resultset 의 구조는 변경 되어야 한다.

- WITH   RECOMPILE : 이 SP 는 실행 중 캐시에 등록되지 않고 매번 재 컴파일을 한다.6+

 

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 실행과정  (0) 2017.01.27
MS SQL.PLSQL - 종류  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 단점  (0) 2017.01.27
MS SQL.PLSQL - 장점  (0) 2017.01.27
Posted by 농부지기
,

[ MS SQL.PLSQL - 문법 ]

 

1. Client Source 만으로 bug 를 잡을 수 없다.

2. 다른 사람이 트리거를 만들 었을 경우 문서가 없으면 존재 하는지 모를 수 있다. ( 그래서 필히 트리거에 대한 문서화를 해야만 한다)

3. 큰 프로젝트를 진행시 트리거를 너무 많이 사용하게 되면 예기치 못한 결과도 초래 할 수 있다. (중첩트리거 때문에….)

 

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 종류  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 단점  (0) 2017.01.27
MS SQL.PLSQL - 장점  (0) 2017.01.27
MS SQL.PLSQL - 특징  (0) 2017.01.27
Posted by 농부지기
,

[ MS SQL.PLSQL - 단점 ]

 

1. Client Source 만으로 bug 를 잡을 수 없다.

2. 다른 사람이 트리거를 만들 었을 경우 문서가 없으면 존재 하는지 모를 수 있다. ( 그래서 필히 트리거에 대한 문서화를 해야만 한다)

3. 큰 프로젝트를 진행시 트리거를 너무 많이 사용하게 되면 예기치 못한 결과도 초래 할 수 있다. (중첩트리거 때문에….)

 

 

'(DB) MS SQL > Procedure (단계별스터디)' 카테고리의 다른 글

MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 문법  (0) 2017.01.27
MS SQL.PLSQL - 장점  (0) 2017.01.27
MS SQL.PLSQL - 특징  (0) 2017.01.27
Java에서 TableType으로 Procedure 호출 2  (0) 2017.01.06
Posted by 농부지기
,

[ MS SQL.PLSQL - 장점 ]

 

1. Check 제약등으로 구현하기 힘든 것들을 트리거로 구현.

2. Network Traffic 이 없다.

3. 차후 Maintenance 를 할 경우 Application 은 수정 할 필요 없이 Trigger 만 수정 하면 된다.

    이렇게 되면 실행 Module 을 각 사용자에게 Copy 해줄 필요가 없다. Trigger 는 Server 에서 작동 하기 때문이다.

4. Application 작성시 코딩이 쉬워 진다.

Posted by 농부지기
,