/******************************************************************************* * Copyright (c) 2013 hangum. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * hangum - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.engine.sql.template; import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine; /** * Oracle DB의 디비를 정의합니다. * * @author hangum * */ public class OracleDMLTemplate extends MySQLDMLTemplate { /* 참조 : http://devhome.tistory.com/22 */ public static final String TMP_GET_PARTDATA = "SELECT * FROM ( " + " SELECT tdb__a.*, ROWNUM AS " + TDB_CUSTOME_COLUMN + " FROM ( %s ) tdb__a " + " ) WHERE " + TDB_CUSTOME_COLUMN + " > %s AND " + TDB_CUSTOME_COLUMN + " <= %s"; /** table - oracle */ public static final String TMP_CREATE_TABLE_STMT = "CREATE TABLE {#schema#}.sample_table ( " + PublicTadpoleDefine.LINE_SEPARATOR + " id number primary key, " + PublicTadpoleDefine.LINE_SEPARATOR + " name varchar2(30) " + PublicTadpoleDefine.LINE_SEPARATOR + ");"; /** constraints */ public static final String TMP_CREATE_CONSTRAINTS_STMT = "ALTER TABLE {#schema#}.table_name "+ PublicTadpoleDefine.LINE_SEPARATOR + " ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n); "+ PublicTadpoleDefine.LINE_SEPARATOR; // plan_table public static final String TMP_EXPLAIN_EXTENDED = "EXPLAIN PLAN SET statement_id = '" + PublicTadpoleDefine.STATEMENT_ID + "' INTO " + PublicTadpoleDefine.DELIMITER + " FOR "; /** procedure */ public static final String TMP_CREATE_PROCEDURE_STMT = "CREATE OR REPLACE PROCEDURE {#schema#}.simpleproc2 (param1 out INT) " + PublicTadpoleDefine.LINE_SEPARATOR + "IS " + PublicTadpoleDefine.LINE_SEPARATOR + "BEGIN " + PublicTadpoleDefine.LINE_SEPARATOR + " SELECT COUNT(*) INTO param1 FROM {#schema#}.sample_table; " + PublicTadpoleDefine.LINE_SEPARATOR + "END;"; /** function */ public static final String TMP_CREATE_FUNCTION_STMT = "CREATE OR REPLACE FUNCTION {#schema#}.hello (param1 VARCHAR2) RETURN VARCHAR2 AS " + PublicTadpoleDefine.LINE_SEPARATOR + "BEGIN " + "RETURN CONCAT('Hello', param1);" + PublicTadpoleDefine.LINE_SEPARATOR + "END; "; /** sysnonym */ public static final String TMP_CREATE_SYNONYM_STMT = "CREATE SYNONYM {#schema#}.sn_sample FOR {#schema#}.sample_table;"; /** sequence */ public static final String TMP_CREATE_SEQUENCE_STMT = "CREATE SEQUENCE {#schema#}.seq_sample START WITH 1;"; /** database link */ public static final String TMP_CREATE_LINK_STMT = "CREATE DATABASE LINK \"TADPOLEHUB_DBLINK\" CONNECT TO {#schema#} IDENTIFIED BY \"<password>\" USING 'XE' "; /** package */ public static final String TMP_CREATE_PACKAGE_STMT = "CREATE OR REPLACE PACKAGE {#schema#}.PKG_SAMPLE " + PublicTadpoleDefine.LINE_SEPARATOR + " AS " + PublicTadpoleDefine.LINE_SEPARATOR + " FUNCTION F_TEST RETURN VARCHAR2; " + PublicTadpoleDefine.LINE_SEPARATOR + " PROCEDURE P_TEST (param1 IN VARCHAR2); " + PublicTadpoleDefine.LINE_SEPARATOR + " END;" + PublicTadpoleDefine.LINE_SEPARATOR + " /" + PublicTadpoleDefine.LINE_SEPARATOR + PublicTadpoleDefine.LINE_SEPARATOR + "CREATE or replace PACKAGE BODY {#schema#}.PKG_SAMPLE " + PublicTadpoleDefine.LINE_SEPARATOR + " AS " + PublicTadpoleDefine.LINE_SEPARATOR + " FUNCTION F_TEST RETURN VARCHAR2 " + PublicTadpoleDefine.LINE_SEPARATOR + " IS " + PublicTadpoleDefine.LINE_SEPARATOR + " BEGIN " + PublicTadpoleDefine.LINE_SEPARATOR + " return to_char(sysdate, 'yyyymmdd'); " + PublicTadpoleDefine.LINE_SEPARATOR + " end; " + PublicTadpoleDefine.LINE_SEPARATOR + PublicTadpoleDefine.LINE_SEPARATOR + " PROCEDURE P_TEST (param1 IN VARCHAR2) " + PublicTadpoleDefine.LINE_SEPARATOR + " IS " + PublicTadpoleDefine.LINE_SEPARATOR + " BEGIN " + PublicTadpoleDefine.LINE_SEPARATOR + " dbms_output.put_line(param1); " + PublicTadpoleDefine.LINE_SEPARATOR + " END;" + PublicTadpoleDefine.LINE_SEPARATOR + "END;"; /** trigger */ public static final String TMP_CREATE_TRIGGER_STMT = "CREATE TRIGGER {#schema#}.testref BEFORE INSERT ON {#schema#}.test1 " + PublicTadpoleDefine.LINE_SEPARATOR + "FOR EACH ROW BEGIN " + PublicTadpoleDefine.LINE_SEPARATOR + " INSERT INTO {#schema#}.test2 SET a2 = :NEW.a1; " + PublicTadpoleDefine.LINE_SEPARATOR + " DELETE FROM {#schema#}.test3 WHERE a3 = :NEW.a1; " + PublicTadpoleDefine.LINE_SEPARATOR + " UPDATE {#schema#}.test4 SET b4 = b4 + 1 WHERE a4 = :NEW.a1; " + PublicTadpoleDefine.LINE_SEPARATOR + "END;"; }