본문 바로가기

오라클

동적 SQL -- 동적 SQL 동적 쿼리는 프로시져등에서 인자로 받은 변수를 조합하여 쿼리문을 생성하여 사용하는 경우를 말한다. 예를 들어 블로그에서 사용자별 게시판 테이블을 만들 때. -- 주의 RESOURCE 롤은 테이블을 생성할 수 있지만 동적 SQL을 이용하여 테이블을 생성할수 는 없다. 동적 SQL로 테이블을 생성하기 위해서는 CREATE TABLE 권한을 설정 해 주어야 한다. -- SYS 계정 cmd>sqlplus sys/"암호" AS sysdba; sql>GRANT CREATE TABLE TO 사용자; ------------------------------------------------------------EXECUTE IMMEDIATE dynamic_sql_string [INTO {define_va.. 더보기
데이터 링크 -- 데이터 링크 -- 데이터 링크 권한 설정-- SYS 계정GRANT CREATE DATABASE LINK TO 사용자명; -- 사용자 계정CREATE DATABASE LINK link_test CONNECT TO 사용자명 IDENTIFIED BY "암호" USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) (HOST=211.169.117.189)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=ORCL)))'; -- ORCL : 데이터베이스 명(SID) -- 암호가 특수문자가 있는 경우에는 "" 안에 암호를 입력한다. -- 링크에 설정된 테이블의 SELECTSELECT 컬럼명, 컬럼명 FROM 테이블명@링크명; //********************.. 더보기
커서(Cursor) -- 커서(Cursor) -- 하나의 레코드가 아닌 여러 레코드로 구성된 작업영역에서 SQL문을 실행하고 그 과정에 생긴 정보를 저장하기 위해서 CURSOR를 사용 1. 암시적인 커서 암시적인 커서는 오라클이나 PL/SQL실행 메커니즘에 의해 처리되는 SQL문장이 처리되는 곳에 대한 익명의 address로 오라클 데이터베이스에서 실행되는 모든 SQL문장은 암시적인 커서이며, 암시적인 커서 속성이 사용될 수 있다. -- 암시적 커서의 속성 SQL%ROWCOUNT : 해당 SQL 문에 영향을 받는 행의 수 SQL%FOUND : 해당 SQL 영향을 받는 행의 수가 1개 이상일 경우 TRUE SQL%NOTFOUND : 해당 SQL 문에 영향을 받는 행의 수가 없을 경우 TRUE SQL%ISOPEN : 항상 FA.. 더보기
트리거(TRIGGER) -- 트리거(TRIGGER) TRIGGER란 DML 작업 즉, INSERT, DELETE, UPDATE 작업이 일어날 때 자동으로 실행되는 객체로 특히 이런 TRIGGER를 DML TRIGGER라 한다. TRIGGER는 데이터의 무결성 뿐만 아니라 다음과 같은 작업에도 사용된다. 트리거 내에서는 COMMIT, ROLLBACK 문을 사용할 수 없다. 트리거의 종류 -- 문장 트리거(문장당 한번만 실행) 트리거가 설정된 테이블에 트리거 이벤트가 발생하면 많은 행에 대해 변경 작업이 발생하더라도 오직 한번만 트리거를 발생시키는 방법 -- 행 트리거(대부분의 쿼리는 행트리거다) 조건을 만족하는 여러 개의 행에 대해 트리거를 반복적으로 여러 번 수행하는 방법으로 [FOR EACH ROW WHEN 조건]절 정의된다.. 더보기
Stored Function(사용자 함수) - 펑션 -- Stored Function(사용자 함수) 스토어드 함수는 시스템 함수처럼 쿼리에서 호출하거나 저장 프로시저처럼 EXECUTE 문을 통해 실행할 수 있다. 프로시져와 비슷하지만 값을 돌려준다. ------------------------------------------------------- 형식(인수나 RETURN 에서는 자료형의 크기를 명시하지 않는다.)CREATE [OR REPLACE] FUNCTION 함수이름[( 매개변수1 IN 자료형, 매개변수2 IN 자료형;)]RETURN datatype; --프로시져와 다른부분IS [변수의 선언]BEGIN ............. RETURN (값); [EXCEPTION] .............END; ---------------------------.. 더보기
오라클 SEQUENCE -- SEQUENCE 특정컬럼에 대해 유일한 값을 연속적으로 생성하기 위해 사용하는 방법 다음 시쿼스 값 : 시퀀스이름.NEXTVAL; 현재 시쿼스 값 : 시쿼스이름.CURRVAL; CREATE TABLE testc( num1 NUMBER ,num2 NUMBER ,num3 NUMBER); -- 1부터 증가하는 간단한 시퀀스 만들기CREATE SEQUENCE seq1; INSERT INTO testc (num1,num2, num3) VALUES (seq1.NEXTVAL, seq1.NEXTVAL, seq1.CURRVAL); COMMIT; SELECT * FROM testc; -- 100부터 1씩 증가 CREATE SEQUENCE seq2 INCREMENT BY 2 -- 증분 START WITH 100 -- .. 더보기
머트리얼라이즈뷰 -- 머트리얼라이즈뷰 일반뷰와 달리 실제데이터(통계정보)를 가지고 있으며, 기준이 되는 테이블에 INSERT, UPDATE, DELETE 가 발생하면 새로운 데이터를 머트리얼라이즈뷰에 반영함 -- 머트라일라이즈뷰를 위한 권한 설정 : sys 계정-- QUERY REWRITE 권한 설정 : 쿼리를 다시 작성 할 수 있는 권한GRANT QUERY REWRITE TO sky(사용자명); --머트리얼라이즈뷰작성권한설정GRANT CREATE MATERIALIZED VIEW TO sky(사용자명); ---------------------------------------------------------------------------------------------- -- 머트리얼라이즈 뷰 생성CREATE MATER.. 더보기
오라클 VIEW 뷰 -- 뷰 : 존재하는 하나이상의 테이블에서 사용자가 얻기 위하는 데이터들만을 편리하게 가져오기 위해 사전에 원하는 컬럼들 만을 모아서 만들어 놓은 가상의 뷰보통 JOIN으로 SELECT문을 만들어 뷰를 사용하는것 같다. 형식 CREATE [OR REPLACE] VIEW 뷰이름 AS SELECT문; OR REPLACE : 뷰이름의 뷰가 없으면 생성하고 있다면 수정함 뷰정보확인 SELECT view_name, text FROM user_views; 뷰삭제 DROP VIEW 뷰이름; 뷰는 RESOURCE 권한으로만은 작성이 불가능 하다. 사용자 권한 확인 SELECT * FROM USER_SYS_PRIVS; -- 사용자의 권한을 수정할 수 있는 사용자 : SYS, SYSTEM -- sys사용자 : 사용자에게 .. 더보기