본문 바로가기

SQL

요일체크 SELECT DECODE(TO_CHAR(SYSDATE, 'D'), '1', '일', '2', '월', '3', '화', '4', '수', '5', '목', '6', '금', '7', '토') FROM DUAL 강신윤의 홈피에서 퍼왔어요. 더보기
다른계정의 select 권한 부여하기 DBA 권한이 있는 계정에서 가능하다. Grant select on 소유자명.테이블명 to 권한을받을사용자. GRANT SELECT ON INSAHMS.INSA_DEPTVIEW_TBL TO ERM (ERM에게 INSAHMS계정의 INSA_DEPTVIEW_TBL 테이블의 조회권한을 부여한다.) 강신윤의 홈피에서 퍼왔어요 더보기
페이징에 이용되는 ROWNUM SELECT z.* FROM ( SELECT CEIL(ROW_NUMBER() OVER (ORDER BY NVL(a.p_idx, a.idx) DESC, a.thread DESC)/10) page, ROWNUM num, a.idx, a.b_id, a.p_idx, a.author_id, a.author_name, a.br_cd, TO_CHAR(a.cdate, 'YYYY/MM/DD') cdate, a.subject, a.read_count, a.thread, a.h_level, b.first_org_nm AS br_nm FROM insa_mansa a, insa_deptview_tbl@insahms b WHERE a.br_cd = b.org_cd(+) AND b_id = 100 ORDER BY NVL(a.p_i.. 더보기
DBlink 생성 CREATE [PUBLIC|PRIVATE] DATABASE LINK dblink_name CONNECT TO dbid IDENTIFIED BY dbpassword using 'sid'; ex) CREATE PRIVATE DATABASE LINK USRAHMS.WORLD CONNECT TO USRAHMS IDENTIFIED BY USRAHMS01 USING 'ND_13_1'; create database link EKPLOGIN.WORLD connect to WEBADM identified by WEBADM using 'ND_31'; 강신윤 홈피에서 퍼왔어요.. 더보기
create tablespace create tablespace $DBName datafiles 'Path/datafile.dbf' size 10 M - 주의 dbf 파일을 생성하기전에 해당 디렉토리는 직접 생성해줘야 함 - Table Space (논리적) - system 또는 sys 계정에 연결되어 있어야 만들수 있다 => DBA계정(관리자계정) - data file이 저장될수 있는 공간이다 (물리적) 블록 (db의 최소단위) 익스텐트 (공간할당의 기본개념) 세그먼트 (TS에 저장되는 Object 단위) 데이터 파일 (물리적공간) 테이블스페이스 (논리적공간) - MS-SQL에서의 DataBase같은 개념이다 - 계정단위이다 - table space 만들기 (확보) 1. D폴더에 'oraDB17'폴더를 생성한다 2. sqlplus ->.. 더보기
TRIGGER BASE -sample CREATE TRIGGER TRIGGER_DELETE_JOJIK_TBL AFTER UPDATE OR INSERT ON INSA_DEPT_TBL FOR EACH ROW DECLARE nowymd VARCHAR2(8); nowcnt INTEGER; BEGIN IF UPDATING THEN SELECT TO_CHAR(SYSDATE, 'YYYYMMD') INTO nowymd FROM DUAL ; SELECT COUNT(*) INTO nowcnt FROM jojik_tbl WHERE dept_code= :NEW.org_cd; IF TRIM(:NEW.end_ymd) = '' THEN UPDATE jojik_tbl SET dept_code = :NEW.org_cd WHERE dept_code = :NEW.org_cd.. 더보기
ORACLE 9i MS-SQL 함수 대체 MS-SQL2000은 재귀순환쿼리 (ORACLE 의 CONNECT BY) 구문이 없습니다.. MS-SQL2005에서는 지원된다고 합니다. DECODE CASE WHEN (오라클도 있음) ex) CASE WHEN 컬럼명 = 'A' THEN 'OK' WHEN 컬럼명 = 'B' THEN 'NO' ELSE 컬럼명 ENDTHEN 'NO' ELSE 컬럼명 END SUBSTR SUBSTRING ex) SUBSTRING('ANSDDD', 1,2) = 'AN' NVL isNULL ex) isNULL(컬럼명,0) => 컬럼값이 널이면 0으로 대체 TO_CHAR,TO_NUMBER CONVERT ex) CONVERT(VARCHAR,컬럼명) => 문자열 형태로 변환 강신윤 홈피에서 퍼왔습니다. 더보기
필드네임 검색으로 테이블 찾기 SELECT DISTINCT TABLE_NAME FROM USER_TAB_COLUMNS WHERE column_name IN ('LCODE', 'SCODE', 'SEQ') 강신윤 홈피에서 퍼왔어요. 더보기
테이블스페이스 변경 - 데이타 테이블스페이스 변경 ALTER TABLE 테이블명 Move Tablespace 새로운스페이스명 - 인덱스 테이블스페이스 변경 ALTER INDEX 테이블명 REBUILD TABLESPACE 새로운스페리스명 - 테이블 필드 특성이 큰 CLOB, BLOB, LONG LOW 등이 있거나 테이블 OBJECT_TYPE이 LOBSEGMENT, LOBINDEX 경우 변경이 되지 않는다. 강신윤 홈피에서 퍼왔어요. 더보기
TRIM 으로 여백 정리 안되는 상황 REPLACE로 정의 데이터를 입력할때 사용자들이 문서를 카피 복사하는 과정에서 스페이스가 1바이트가 아닌 문서 특성에 따라 2바이트로 들어가는 경우가 있다. 이런 경우에는 TRIM으로 여백 정리가 되지 않는다. TOAD에서는 문자는 집어내기 어려우므로 PLSQL로 정리 하였다. PLSQL에서 2바이트를 차지하고 있는 한칸의 공간을 카피하여 사용한다. UPDATE 테이블명 SET 컬럼1 = REPLACE(컬럼1, ' ', ''), WHERE 컬럼1 LIKE '% %' 강신윤의 홈피에서 퍼왔어요... 더보기