CREATE OR REPLACE FUNCTION fnc_table_script (p_table_name VARCHAR2)
RETURN VARCHAR2
IS
V_SCRIPT VARCHAR2 (4000);
BEGIN
SELECT 'CREATE TABLE '
|| P_TABLE_NAME
|| '(
ID NUMBER(10),
UDID VARCHAR2(30),
STATUS NUMBER(1),
CREATED_BY NUMBER(10),
CREATED_ON DATE,
UPDATED_BY NUMBER(10),
UPDATED_ON DATE,
COMPANY_NO NUMBER(10),
BRANCH_NO NUMBER(10)
);'
|| CHR (10)
|| '
CREATE SEQUENCE '
|| P_TABLE_NAME
|| '_ID_SEQ'
|| '
START WITH 1
INCREMENT BY 1
MINVALUE 0
NOCACHE
NOCYCLE
NOORDER;'
|| CHR (10)
|| '
CREATE OR REPLACE TRIGGER '
|| P_TABLE_NAME
|| '_TRG
BEFORE INSERT OR UPDATE
ON '
|| P_TABLE_NAME
|| '
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
IF :NEW.ID IS NULL THEN
:NEW.ID := '
|| P_TABLE_NAME
|| '_ID_SEQ.NEXTVAL;
END IF;
:NEW.CREATED_ON := SYSDATE;
:NEW.CREATED_BY := FNC_USER_ID(''APP_USER'');
ELSIF UPDATING THEN
:NEW.UPDATED_ON := SYSDATE;
:NEW.UPDATED_BY := FNC_USER_ID(''APP_USER'');
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END '
|| P_TABLE_NAME
|| '_TRG;
/'
|| '
CREATE UNIQUE INDEX '
|| P_TABLE_NAME
|| '_PK ON '
|| P_TABLE_NAME
|| '
(ID);
ALTER TABLE '
|| P_TABLE_NAME
|| ' '
|| ' ADD (
CONSTRAINT '
|| P_TABLE_NAME
|| '_PK'
|| '
PRIMARY KEY
(ID)
USING INDEX '
|| P_TABLE_NAME
|| '_PK
ENABLE VALIDATE);
CREATE OR REPLACE PUBLIC SYNONYM '
|| P_TABLE_NAME
|| ' FOR '
|| P_TABLE_NAME
|| ';
'
INTO V_SCRIPT
FROM DUAL;
RETURN V_SCRIPT;
END;
/
RETURN VARCHAR2
IS
V_SCRIPT VARCHAR2 (4000);
BEGIN
SELECT 'CREATE TABLE '
|| P_TABLE_NAME
|| '(
ID NUMBER(10),
UDID VARCHAR2(30),
STATUS NUMBER(1),
CREATED_BY NUMBER(10),
CREATED_ON DATE,
UPDATED_BY NUMBER(10),
UPDATED_ON DATE,
COMPANY_NO NUMBER(10),
BRANCH_NO NUMBER(10)
);'
|| CHR (10)
|| '
CREATE SEQUENCE '
|| P_TABLE_NAME
|| '_ID_SEQ'
|| '
START WITH 1
INCREMENT BY 1
MINVALUE 0
NOCACHE
NOCYCLE
NOORDER;'
|| CHR (10)
|| '
CREATE OR REPLACE TRIGGER '
|| P_TABLE_NAME
|| '_TRG
BEFORE INSERT OR UPDATE
ON '
|| P_TABLE_NAME
|| '
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
IF :NEW.ID IS NULL THEN
:NEW.ID := '
|| P_TABLE_NAME
|| '_ID_SEQ.NEXTVAL;
END IF;
:NEW.CREATED_ON := SYSDATE;
:NEW.CREATED_BY := FNC_USER_ID(''APP_USER'');
ELSIF UPDATING THEN
:NEW.UPDATED_ON := SYSDATE;
:NEW.UPDATED_BY := FNC_USER_ID(''APP_USER'');
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END '
|| P_TABLE_NAME
|| '_TRG;
/'
|| '
CREATE UNIQUE INDEX '
|| P_TABLE_NAME
|| '_PK ON '
|| P_TABLE_NAME
|| '
(ID);
ALTER TABLE '
|| P_TABLE_NAME
|| ' '
|| ' ADD (
CONSTRAINT '
|| P_TABLE_NAME
|| '_PK'
|| '
PRIMARY KEY
(ID)
USING INDEX '
|| P_TABLE_NAME
|| '_PK
ENABLE VALIDATE);
CREATE OR REPLACE PUBLIC SYNONYM '
|| P_TABLE_NAME
|| ' FOR '
|| P_TABLE_NAME
|| ';
'
INTO V_SCRIPT
FROM DUAL;
RETURN V_SCRIPT;
END;
/

কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন