목록Programming (138)
C#,Delphi,Oracle,MSSQL 개발자블로그
DBMS_OUTPUT 패키지는 SQL*Plus 또는 SQL*DBA 에서 디버깅 또는 출력 메시지 그리고 report를 출력하기 위한 패키지이다. PL/SQL은 화면에 별도로 출력하는 기능이 없으며, 오라클에서 화면에 출력하기 위해 DBMS_OUTPUT 패키지를 제공한다. 사용법. 1. DBMS_OUTPUT 패키지의 출력 프로시저를 사용하기 위해 먼저 SERVEROUTPUT 의 값을 설정해야 한다. (DEFAULT로 OFF로 지정 되어 있다.) - SERVEROUTPUT 상태 보는 법. SHOW SERVEROUTPUT; - SERVEROUTPUT 상태를 ON으로 설정한다 SET SERVEROUTPUT ON; 2. 라인 출력 예제 Ex. BEGIN DBMS_OUTPUT.PUT_LINE ('안녕'); END;..
● 패키지 - 논리적으로 관련된 PL/SQL 유형, 항목 및 서브 프로그램을 하나의 컨테이너로 묶는다. Ex. HR 패키지에는 채용 및 해고 프로시저, 커시면 및 보너스 함수, 비과세 변수 등이 들어있을 수 있다. - 명세(Specification), 몸체(Body)의 두 부분으로 구성된다. - 호출 또는 중첩하거나 매개변수를 지급할 수 없다. - 패키지 PL/SQL 생성자를 호출하면 전체 패키지가 메모리에 로드되므로 나중에 관련 생성자를 호출할 때 디스크 I/O가 필요하지 않다. - 패키지 명세는 패키지 몸체 없이 존재할 수 있지만, 패키지 몸체는 패키지 명세 없이 존재할 수 없다. - 패키지에 통합한 독립형 프로시저는 삭제해야 한다. ● 패키지 명세 작성 CREATE [OR REPLACE] PACKA..
● 내장 함수 - 내장 함수는 매개변수를 사용하여 호출할 수 있는 명명된 PL/SQL 블록이며, 일반적으로 값을 계산할 때 사용한다. - 함수와 프로시저는 호출 환경으로 값을 반환해야 한다는 점을 제외하면 구조가 동일하다. (IN 매개변수모드 사용) - 함수 헤더에는 RETURN 절이 있어야 하며, 실행 부분에는 RETURN 문이 하나이상 있어야 한다. CREATE [OR REPLACE] FUNCTION function_name (parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, ...) RETURN datatype IS/AS PL/SQL Block; - RETURN 데이터 유형에는 크기 사양이 포함될 수 없다. - 함수의 PL/SQL 블록에서는 ..
* 2단원은 Procedure Builder 사용에 관한 내용이므로 생략. ● 프로시저란? 매개변수(인수)를 사용하여 호출할 수 있는 명명된 PL/SQL블록이다. ● 프로시저 작성구문 CREATE [OR REPLACE] PROCEDURE procedure_name (parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, ...) IS/AS PL/SQL Block; - 프로시저 매개변수 모드 사용 매개변수유형 설명 IN (기본값) 호출 환경에서 프로시저로 상수 을 전달한다. OUT 프로시저에서 호출 환경으로 값을 전달한다. IN OUT 동일한 매개변수를 사용하여 호출 환경에서 프로시저로 값을 전달하고 프로시저에서 호출 환경으로 다른 값을 전달받을 수 있다..
● PL/SQL의 블록 구조 - 익명 PL/SQL 블록의 블록 구조 DECLARE (선택사항) 블록안에서 사용될 PL/SQL 객체를 선언한다. BEGIN (필수사항) 실행문을 정의한다. EXCEPTION (선택사항) 오류가 발생할 경우 수행될 작업을 정의한다. END; (필수사항) - PL/SQL 서브 프로그램으 블록 구조 헤더 IS/AS 선언부분 BEGIN 실행부분 EXCEPTION (선택사항) 예외부분 END;
http://wiki.gurubee.net/pages/viewpage.action?pageId=26744652
http://egloos.zum.com/messfilm/v/2166470 오라클에서 Bind 변수를 사용해야 되는 이유 가. 바인드 변수를 사용 시 하드 파싱은 최초 1회 일어나며, 이후 생성된 실행계획(Library Cache)을 재사용한다. 나. 바인드 변수 미사용 시 각 sql문장 수 만큼 하드파싱이 일어난다. 다. 실행속도 및 메모리 공간활용면에서 바인드 변수 사용을 권장한다. 출처 : http://www.jigi.net/entry/%EC%98%A4%EB%9D%BC%ED%81%B4%EC%97%90%EC%84%9C-Bind-%EB%B3%80%EC%88%98%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C..
오라클 SQL은 실행전에 반드시 파싱을 하도록 되어있다. Hard Parsing(이하 하드 파싱)은 기본적으로 다음의 스텝을 가진다. 1. SQL문을 shared pool에 로딩한다. 2. Syntax parsing. 3. Semantic parsing 4. Query Transformation 5. Optimization 6. Create executable 여기서 중요한 것은 soft parsing(소프트 파싱)은 위의 1번 SQL문을 shared pool에 로딩하지 않는 다는 점이다. 정확히 말하면, SQL 문에 대해서 오라클에서는 해싱값을 가지게 되고 그 값을 share pool에서 찾아오게 된다. 그래서 쿼리에 space나 개행문자등이 오면 SQL문의 해싱값이 달라지니 hard parsing이 ..
먼저 오라클에서 쿼리를 날리게 되면, 오라클은 옵티마이저라는 놈을 이용해서 실행계획 즉 plan이라는걸 짜게(?) 됩니다. 이 때 실행계획이 완성되기 전까지는 꽤 많은 리소스들이 사용된다고 합니다. 실행계획이란건 이런거죠. 예를 들어 select empno from student where empno = 100 이렇다면, 오라클은 empno컬럼에 걸린 인덱스를 가지고 empno가 100인것을 찾겠다.. 뭐 이정도 되겠죠. 물론 이건 너무 간단한 예이니깐..머.. 그런데 조금 있다가 누군가가 select empno from student where empno = 100이라고 똑같은 쿼리를 날리게 되면, 오라클은 흠..새로운 쿼리가 들어왔으니 또 계획을 세워야 겠구만..헉헉헉.. 이렇게 한다면 곤란하겠죠? ..
ROWID 정의 ▣ ROWID는 ORACLE에서 INDEX를 생성하기 위하여 내부적으로 사용하는 PSEUDOCOLUMN 으로 사용자가 임으로 변경하거나 삭제할 수 없다. ▣ 단지 테이블의 한 컬럼처럼 참조만 가능하며 데이타베이스에 값이 저장되지는 않는다. ▣ ROWID는 물리적인 ADDRESS를 가지고 있기 때문에 SINGLE BLOCK ACCESS로 찾고자 하는 ROW를 찾을 수 있어 물리적인 ROWID는 주어진 테이블에 가장 빠른 ACCESS 방법을 제공하게 된다. ▣ ROWID를 분석해보면 AAAArs AAD AAAAUa AAA ------ --- ------ --- 1 2 3 4 1) 6자리 : 데이터 오브젝트 번호 (data object number) - 오브젝트의 고유 번호 2) 3자리 : 상..