CREATE OR REPLACE FUNCTION fnc_seq_script (p_table_name VARCHAR2)
RETURN VARCHAR2
IS
V_SCRIPT VARCHAR2 (4000);
BEGIN
SELECT 'CREATE SEQUENCE '
|| 'S_'
|| P_TABLE_NAME
|| '_ID'
|| '
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
V_SEQ_NO NUMBER;
BEGIN
IF INSERTING THEN
IF :NEW.ID IS NULL THEN
:NEW.ID :='
|| 'S_'
|| P_TABLE_NAME
|| '_ID'
|| '.NEXTVAL;
END IF;
IF :NEW.COMPANY_ID IS NULL THEN
:NEW.COMPANY_ID := FNC_GET_COMPANY;
END IF;
IF :NEW.LOCATION_ID IS NULL THEN
:NEW.LOCATION_ID := FNC_GET_LOCATION;
END IF;
IF :NEW.STATUS IS NULL THEN
:NEW.STATUS := 1;
END IF;
:NEW.CREATED_BY := FNC_USER_ID(NVL(V(''APP_USER''),USER));
:NEW.CREATED_ON := SYSDATE;
ELSIF UPDATING THEN
:NEW.UPDATED_BY := FNC_USER_ID(NVL(V(''APP_USER''),USER));
:NEW.UPDATED_ON := SYSDATE;
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END '
|| P_TABLE_NAME
|| '_TRG;
/
SHOW ERRORS;
CREATE OR REPLACE PUBLIC SYNONYM '
|| P_TABLE_NAME
|| ' FOR '
|| P_TABLE_NAME
|| ';
'
INTO V_SCRIPT
FROM DUAL;
RETURN V_SCRIPT;
END;
/

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