Table 정보 조회하기
select * from all_tables
- 모든 테이블 조회
select * from user_tables
- 로그인된 user의 테이블 조회
(= select * from tab)
select * from all_tables
- 모든 테이블 조회
select * from user_tables
- 로그인된 user의 테이블 조회
(= select * from tab)
Column 정보 조회하기
select * from user_tab_columns
select * from user_tab_columns
이거 찾아서 한참 헤맸다는.. 쿨럭... -_-;;
예를 들어서..
여러테이블에 특정 필드의 값을 수정해야 하는 프로시져를 작성한다면..
다음과 같이 작성할수 있지 않을까..
CREATE OR REPLACE Procedure sp_field_change
(
R_TEXT OUT VARCHAR2
,V_F_1 IN VARCHAR2 --변경대상 값
,V_T_2 IN VARCHAR2 --변경할 값
) IS
V_SQL VARCHAR2(1000);
T_RET VARCHAR2(5000);
begin
DECLARE
CURSOR TAB_INFO IS
SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE
FROM USER_TAB_COLUMNS A, TAB B
WHERE A.TABLE_NAME = B.TNAME
AND B.TABTYPE = 'TABLE';
BEGIN
T_RET := '';
FOR TAB_INFO_VAL IN TAB_INFO
LOOP
IF TAB_INFO_VAL.DATA_TYPE = 'VARCHAR2' THEN
-- 변경 대상 값과 데이터 타입이 같은것만 체크
V_SQL := 'UPDATE ' || TAB_INFO_VAL.TABLE_NAME || ' SET ' || TAB_INFO_VAL.COLUMN_NAME || ' = ''' || V_T_2 || '''';
V_SQL := V_SQL || ' WHERE ' || TAB_INFO_VAL.COLUMN_NAME || ' = ''' || V_F_1 || '''';
EXECUTE IMMEDIATE V_SQL;
IF SQL%FOUND THEN
T_RET := T_RET || '_' || V_SQL;
END IF;
END IF;
END LOOP;
END;
IF T_RET = '' THEN
R_TEXT := V_F_1;
ELSE
R_TEXT := T_RET;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
R_TEXT := 'ERROR => ' || SQLERRM;
end sp_field_change;
(
R_TEXT OUT VARCHAR2
,V_F_1 IN VARCHAR2 --변경대상 값
,V_T_2 IN VARCHAR2 --변경할 값
) IS
V_SQL VARCHAR2(1000);
T_RET VARCHAR2(5000);
begin
DECLARE
CURSOR TAB_INFO IS
SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE
FROM USER_TAB_COLUMNS A, TAB B
WHERE A.TABLE_NAME = B.TNAME
AND B.TABTYPE = 'TABLE';
BEGIN
T_RET := '';
FOR TAB_INFO_VAL IN TAB_INFO
LOOP
IF TAB_INFO_VAL.DATA_TYPE = 'VARCHAR2' THEN
-- 변경 대상 값과 데이터 타입이 같은것만 체크
V_SQL := 'UPDATE ' || TAB_INFO_VAL.TABLE_NAME || ' SET ' || TAB_INFO_VAL.COLUMN_NAME || ' = ''' || V_T_2 || '''';
V_SQL := V_SQL || ' WHERE ' || TAB_INFO_VAL.COLUMN_NAME || ' = ''' || V_F_1 || '''';
EXECUTE IMMEDIATE V_SQL;
IF SQL%FOUND THEN
T_RET := T_RET || '_' || V_SQL;
END IF;
END IF;
END LOOP;
END;
IF T_RET = '' THEN
R_TEXT := V_F_1;
ELSE
R_TEXT := T_RET;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
R_TEXT := 'ERROR => ' || SQLERRM;
end sp_field_change;
출처 : http://webfactory.tistory.com/category/컴퓨터일반/DB?page=2
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
데이터 사전
USER_OBJECTS(OBJ) : 모든 오브젝트에 대한 정보를 지원, 오브젝트 유형, 작성시간, 오브젝트에 사용된 최종 DDL 명령, alter, grant 및 revoke 등
USER_TABLES(TABS) : 테이블에 대한 정보
USER_TAB_COLUMNS(COLS) : 컬럼에 대한 정보
USER_VIEWS : 뷰에 대한 정보
USER_SYNONYMS(SYN) : 동의어
USER_SEQUENCES(SEQ) : 시퀀스
USER_CONSTRAINTS : 제약조건
USER_CONS_COLUMNS : 제약 조건을 가진 열에 대한 정보
USER_TAB_COMMENTS : 테이블/뷰에 대한 주석
USER_COL_COMMENTS : 컬럼에 대한 주석
USER_INDEXES(IND) : 인덱스에 관한 정보
USER_IND_COLUMNS : 인덱스열에 대한 정보
USER_CLUSTERS(CLU) : 클러스터와 관련된 정보
USER_DB_LINKS : 데이터베이스 링크에 관련된 정보
USER_TRIGGERS : 트리거
USER_SOURCE : 프로시저, 함수 및 패키지
USER_ERRORS : 코드 오류
USER_TABLESPACES : 테이블스페이스
USER_USERS : 사용자
USER_TAB_PRIVS : 테이블 권한
USER_COL_PRIVS : 열 권한
USER_SYS_PRIVS : 시스템 권한
반응형
'아이티 > oracle&DB' 카테고리의 다른 글
오라클 (Oracle) 에서 소수점처리 어떻게 하지? (0) | 2011.12.28 |
---|---|
decode의 활용법 (0) | 2011.12.15 |
오라클함수 rank()와 dense_rank()의 차이점 (0) | 2011.11.18 |
msvcp71.dll msvcr71.dll 오류 해결법 (0) | 2011.04.13 |
[ORACLE/SQL] 함수 - 숫자함수 (0) | 2010.02.22 |
Java를 이용한 CLOB, BLOB 조작법 (0) | 2009.11.10 |
DataType 중 Blob을 아세요...??? (0) | 2009.11.10 |
oracle에서 access방법 (0) | 2009.09.29 |
랜덤하게 시리얼번호(serial number) 생성하기 (0) | 2009.02.13 |
시간간격을 년, 개월, 일수로 보기 (0) | 2009.02.13 |