슬라이드 1

Similar documents
목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

13주-14주proc.PDF

PowerPoint Presentation

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Microsoft PowerPoint - e pptx

90

강의 개요

10.ppt

슬라이드 제목 없음

슬라이드 1

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

DBMS & SQL Server Installation Database Laboratory

ALTIBASE HDB Patch Notes

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Microsoft Word - 05_SUBPROGRAM.doc

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

Lab 3. 실습문제 (Single linked list)_해답.hwp

歯PLSQL10.PDF

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

PowerPoint 프레젠테이션

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

歯sql_tuning2

untitled

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

5장 SQL 언어 Part II

문서 템플릿

슬라이드 1

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint 프레젠테이션

Microsoft Word - FunctionCall

Altibase Stored Procedure Manual

Session Title

컴파일러

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

MySQL-.. 1

빅데이터분산컴퓨팅-5-수정

윈도우시스템프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

뇌를자극하는 SQL Server 2012 (1 권 ) 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr

6장. SQL

PHP & ASP

PowerPoint 프레젠테이션

chap 5: Trees

SQL

Tablespace On-Offline 테이블스페이스 온라인/오프라인

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

JDBC 소개및설치 Database Laboratory

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Microsoft PowerPoint - 1_3_DBA_SQL_tuning

Microsoft PowerPoint - additional01.ppt [호환 모드]

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

untitled

TITLE

설계란 무엇인가?

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

준비사항 } 실습조건 } MS-SQL Server 에연결가능한컴퓨터 } 실습용서버혹은별도의 MS-SQL 서버 } Northwind 데이터베이스 } MS-SQL 2000 에제공되는예제데이터베이스 } MS-SQL 2008 에는 Northwind 가기본으로제공되지않기때문에실

금오공대 컴퓨터공학전공 강의자료

API 매뉴얼

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

MS-SQL SERVER 대비 기능

PowerPoint 프레젠테이션

untitled

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

슬라이드 1

Microsoft PowerPoint - a10.ppt [호환 모드]

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

NoSQL

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Index

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

MySQL-Ch10

MPLAB C18 C

Microsoft PowerPoint SQL 추가 기능

Microsoft PowerPoint - C++ 5 .pptx

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

뇌를자극하는 SQL Server < 이것만은알고갑시다 > 모범답안 2 장 1. Windows XP Home, Windows XP Professional, Windows Vista Basic, Window

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Visual Basic 반복문

ePapyrus PDF Document

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

PowerPoint Presentation

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

adfasdfasfdasfasfadf

untitled

Transcription:

9. 저장프로시저 동일한 Transact-SQL 문을수시로사용한다면저장프로시저로만들어사용해보자. 효율성과성능면에서월등한발전을경험할수있을것이다.

2 청춘 청춘이란인생의어느기간을말하는것이아니라마음의상태를말하는것이다. 그것은장밋빛얼굴, 앵두같은입술, 하늘거리는자태가아니고강인한의지, 풍부한상상력, 불타는정열을말한다. 청춘이란인생의깊은샘물에서나오는정신력을뜻하며청춘이란유약함을물리치는용기, 안이함을뿌리치는모험심을의미한다. 때로는이십세의청년보다육십세가된사람에게청춘이있는것이다. 나이가먹는다고해서사람이늙는것은아니다. 이상을잃어버릴때비로서늙는것이다.

3 저장프로시저의정의 (What Are Stored Procedures?) 서버에저장된 Transact-SQL 문의명명된컬렉션 반복적인작업을캡슐화 입력매개변수를받아처리하고출력매개변수값을리턴 수행에대한성공과실패를확인하는상태값을리턴 저장프로시저의다섯가지유형 시스템저장프로시저 (System Stored Procedure) 로컬저장프로시저 (Local Stored Procedure) 임시저장프로시저 (Temporary Stored Procedure) 원격저장프로시저 (Remote Stored Procedure) 확장저장프로시저 (Extended Stored Procedure)

저장프로시저의장점 (1) (Advantages of Stored Procedures) 저장프로시저를만들고여러곳에서호출하여사용함 모듈화된프로그램작성가능 별도의배포작업이없어도일괄적용됨 실행계획을재사용하여성능을향상시킴 처음수행될때실행계획을만들어메모리에캐싱됨 다음사용부터재사용됨 임의쿼리보다빠르게수행됨 보안메커니즘을제공함 저장프로시저안의개체들에대한권한이없어도됨 네트워크트래픽감소 저장프로시저를수행하는명령문만전달하면됨 4

5 저장프로시저의장점 (2) (Advantages of Stored Procedures) 특성뷰프로시저 조회 O O 함수 O 트리거 X 수정 X O X O 매개변수 X O O X 수식 X X O X FROM 절 O X O X

6 저장프로시저만들기 (1) (Creating Stored Procedures) 만들기구문 CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [VARYING] [= default ] [ OUTPUT ] ] [,...n ] [ WITH { RECOMPILE ENCRYPTION RECOMPILE, ENCRYPTION } ] [ FOR REPLICATION ] sql_statement [...n ] i

7 CREATE PROCEDURE 문을사용 USE Northwind CREATE PROC dbo.overdueorders SELECT * FROM dbo.orders WHERE RequiredDate < GETDATE() AND ShippedDate IS Null 저장프로시저만들기 (2) (Creating Stored Procedures) 지연된이름확인 (Deferred Name Resolution) 저장프로시저에대한정보얻기 sp_help, sp_depends, sp_rename, sp_helptext?

저장프로시저실행 (Stored Procedure Execution) 저장프로시저만으로실행 EXEC OverdueOrders INSERT 문안에서저장프로시저실행 INSERT INTO Customers EXEC EmployeeCustomer 저장프로시저의데이터반환 수행된 SELECT 문의결과 RETURN 값 ( 지정하지않으면 0) 출력 (OUTPUT) 매개변수 프로시저밖에서사용가능한전역커서 8

9 RETURN 값사용 (Using RETURN Value) 저장프로시저만들기 CREATE PROC Get_Sales_Num @fromdate datetime, @todate datetime SELECT * FROM Sales WHERE ord_date BETWEEN @fromdate AND @todate RETURN(@@Rowcount) 저장프로시저실행 DECLARE @SalesNum int EXEC @SalesNum = Get_Sales_Num '19940101', '19941231' SELECT @SalesNum Counts

10 CREATE PROCEDURE dbo.[year to Year Sales] @BeginDate DateTime = Null, @EndDate DateTime = Null IF @BeginDate IS Null SET @BeginDate = dateadd(yy,-1,getdate()) IF @EndDate IS Null SET @EndDate = GetDate() IF Datediff(dd,@BeginDate,@EndDate) > 365 BEGIN RAISERROR('The maximum timespan allowed for this report is one year.', 14, 1) RETURN END 입력매개변수사용 (Input Parameters) 들어오는모든매개변수의값을미리검사 매개변수에대한적절한기본값사용 SELECT O.ShippedDate,O.OrderID,OS.Subtotal, DATENAME(yy,ShippedDate) Year FROM Orders O INNER JOIN [Order Subtotals] OS ON O.OrderID = OS.OrderID WHERE O.ShippedDate BETWEEN @BeginDate AND @EndDate

11 입력매개변수를사용한저장프로시저실행 매개변수이름으로값전달 EXEC AddCustomer @CustomerID = 'ALFKI', @ContactName = 'Maria Anders', @CompanyName = 'Alfreds Futterkiste', @ContactTitle = 'Sales Representative', @Address = 'Obere Str. 57', @City = 'Berlin', @PostalCode = '12209', @Country = 'Germany', @Phone = '030-0074321' 위치로값전달 (Setting Parameter Values) EXEC AddCustomer 'ALFKI2', 'Alfreds Futterkiste', 'Maria Anders', 'Sales Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-0074321'

12 저장프로시저만들기 CREATE PROCEDURE dbo.mathtutor @m1 smallint, @m2 smallint, @result int OUTPUT SET @result = @m1 * @m2 저장프로시저실행 DECLARE @answer smallint EXECUTE MathTutor 5, 6, @answer OUTPUT SELECT 'The result is: ', @answer 실행결과 The result is: 30 출력매개변수를사용한값전달 (Return Values Using OUTPUT Parameters)

저장프로시저변경및삭제 (Altering and Dropping Stored Procedures) 저장프로시저변경 USE Northwind ALTER PROC dbo.overdueorders SELECT CONVERT(char(8), RequiredDate, 1) RequiredDate, CONVERT(char(8), OrderDate, 1) OrderDate, OrderID, CustomerID, EmployeeID FROM Orders WHERE RequiredDate < GETDATE() AND ShippedDate IS Null ORDER BY RequiredDate 저장프로시저삭제 DROP PROC dbo.overdueorders 13

14 일반쿼리문의실행 저장프로시저만들기 실행계획재사용 (1) (Reusing Execution Plans) USE Northwind SELECT * FROM Orders WHERE OrderDate BETWEEN '19960707' AND '19960708' --SEEK SELECT * FROM Orders WHERE OrderDate BETWEEN '19960707' AND '19961231' --SCAN CREATE PROC Get_Orders @FromDate char(08), @ToDate char(08) SELECT * FROM Orders WHERE OrderDate BETWEEN @FromDate AND @ToDate

실행계획재사용 (2) (Reusing Execution Plans) 저장프로시저실행 EXEC Get_Orders '19960707', '19960708' EXEC Get_Orders '19960707', '19961231' 첫번째경우는 Index Seek 두번째경우도 Index Seek RECOMPILE 사용 EXEC Get_Orders '19960707', '19960708' EXEC Get_Orders '19960707', '19961231' WITH RECOMPILE 두번째의경우 Clustered Index Scan 15

16 재컴파일을해야하는경우 재컴파일 (Recompiling Stored Procedures) 저장프로시저에대입되는변수의변화폭이심한경우 변수의대입폭은일정하나데이터의분포도가비정형적일경우 재컴파일방법 저장프로시저를수행할때마다재컴파일 저장프로시저만들때 WITH RECOMPILE 사용 현재수행에대해서만재컴파일 WITH RECOMPILE 옵션을사용하여저장프로시저실행 특정개체와관련된저장프로시저재컴파일 sp_recompile object : 개체와관련된저장프로시저가이후처음수행될때재컴파일됨

17 저장프로시저작성에대한지침 (Guidelines for Creating Stored Procedures) dbo 사용자가모든저장프로시저를소유하도록함 각각의저장프로시저는단일작업을수행하도록함 만들고테스트하고문제해결하고사용 sp_ 접두사를저장프로시저이름에사용하지않음 모든저장프로시저가동일한연결설정을사용하도록함 임시저장프로시저의사용을최소화함 syscomments 시스템테이블의내용을직접삭제하지않아야함

정리

저장프로시저그룹화예 1 CREATE PROC usp_getcustomer;1 SELECT CustomerID, City, CompanyName FROM Customers ORDER BY CustomerID CREATE PROC usp_getcustomer;2 SELECT CustomerID, City, CompanyName FROM Customers ORDER BY City 2 -- 프로시저수행 EXEC usp_getcustomer;1 EXEC usp_getcustomer;2 3 -- 프로시저삭제 DROP PROC usp_getcustomer H 19

20 OUTPUT 커서매개변수사용예 1 USE pubs CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT SET @titles_cursor = CURSOR FOR SELECT * FROM titles WHERE type = 'business' OPEN @titles_cursor 2 DECLARE @MyCursor CURSOR EXEC titles_cursor @titles_cursor = @MyCursor OUTPUT FETCH NEXT FROM @MyCursor WHILE (@@FETCH_STATUS = 0) BEGIN FETCH NEXT FROM @MyCursor END CLOSE @MyCursor DEALLOCATE @MyCursor H

21 다음중오류가발생하는부분은 USE Tempdb A 1 IF OBJECT_ID('dbo.usp_Proc1') IS NOT NULL DROP PROC dbo.usp_proc1 IF OBJECT_ID('dbo.usp_Proc2') IS NOT NULL DROP PROC dbo.usp_proc2 IF OBJECT_ID('dbo.Tbl1') IS NOT NULL DROP TABLE dbo.tbl1 2 3 CREATE PROC dbo.usp_proc1 SELECT col1 FROM dbo.tbl1 EXEC dbo.usp_proc1 B 4 5 EXEC dbo.usp_proc1 CREATE PROC dbo.usp_proc2 SELECT col2 FROM dbo.tbl1 C CREATE TABLE Tbl1 (col1 int) INSERT INTO dbo.tbl1(col1) VALUES(1) 6 EXEC dbo.usp_proc2 H