최근 포토로그


MS-SQL에서 "create table if exists" 를 오라클 구문으로 바꾸기 MSSQL과 ORACLE

잘 알다시피 mssql에서는 동적으로 테이블을 생성하기 위해서 

IF EXISTS (select table_name
             from information_schema.tables
Where table_name = 'test123')
drop table test123
 CREATE TABLE test123
  ( vend_cd             NVARCHAR(255)
  , vend_nm             NVARCHAR(255)
 )

이런 구문이 있다.

그런데 오라클은?



별로 어렵지 않아요.



DECLARE v_table_name varchar2(50) := upper('test123');

CURSOR C1 is SELECT table_name FROM all_tables where table_name = v_table_name;
BEGIN
FOR I IN c1 LOOP
EXECUTE IMMEDIATE 'DROP TABLE '||I.table_name;
END LOOP;
EXECUTE IMMEDIATE ('CREATE TABLE ' || v_table_name  || ' ( '
|| ' SIT_CODE       VARCHAR2 (8), '
|| ' PT_SEQUENCE    INTEGER, '
|| ' PT_CHANGETIME  DATE, '
|| ' PT_OPCODE      INTEGER, '
|| ' PT_STATUS      INTEGER, '
|| ' PT_ERR_MESSAGE VARCHAR2 (255), '
|| ' PT_ERR_OBJ     CLOB, '
|| ' PT_ERR_CODE    VARCHAR2 (255), '
|| ' PT_PUB_AFTER   DATE   ) '
);
END;





단, 위의 구문은 테이블이 존재하면 삭제(DROP) 하고 만드는 거다.

mssql은 물론이요, 오라클 또한 그러니 잘보시오.


테이블이 흔적도 없이 사라졌다가 생긴다는 말임.






덧글

댓글 입력 영역