MINI MINI MANI MO
Rem
Rem Copyright (c) 2012, 2015, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem rqadmin.sql - RQADMIN role procedures
Rem
Rem DESCRIPTION
Rem Pocedures, functions and packages for RQADMIN role.
Rem
Rem NOTES
Rem
Rem MODIFIED (MM/DD/YY)
Rem ffeli 04/23/15 - add overwrite argument to rqScriptCreate
Rem demukhin 10/16/12 - Created
Rem
--***************************************************************************--
--* (*) R SCRIPTS *--
--***************************************************************************--
-------------------------------- rqScriptCreate -------------------------------
--
CREATE PROCEDURE rqScriptCreate(
v_name VARCHAR2,
v_script CLOB,
v_global BOOLEAN DEFAULT FALSE,
v_overwrite BOOLEAN DEFAULT FALSE)
AUTHID DEFINER
AS
v_owner VARCHAR2(128);
CONSTRAINT_VIOLATION EXCEPTION;
PRAGMA EXCEPTION_INIT(CONSTRAINT_VIOLATION , -1);
BEGIN
COMMIT;
IF REGEXP_INSTR(v_name, '^RQ.?\$', 1, 1) = 1 THEN
RAISE_APPLICATION_ERROR(-20000,
'cannot create a script with a reserved name');
END IF;
IF v_script IS NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'script is NULL');
END IF;
IF v_global THEN
v_owner := 'RQSYS';
ELSE
v_owner := SYS_CONTEXT('USERENV', 'SESSION_USER');
END IF;
INSERT INTO rq$script (owner, name, script)
VALUES (v_owner, v_name, v_script);
COMMIT;
EXCEPTION
WHEN CONSTRAINT_VIOLATION THEN
IF(v_overwrite) THEN
update sys.rq$script set script = v_script
where owner = v_owner and name = v_name;
COMMIT;
ELSE
RAISE_APPLICATION_ERROR(-20000,
'script name conflict detected, use a different script name ' ||
'or overwrite option');
END IF;
END;
/
SHOW ERRORS
GRANT EXECUTE ON rqScriptCreate TO rqadmin;
--------------------------------- rqScriptDrop --------------------------------
--
CREATE PROCEDURE rqScriptDrop(
v_name VARCHAR2,
v_global BOOLEAN default FALSE,
v_silent BOOLEAN default FALSE)
AUTHID DEFINER
AS
v_user varchar2(128);
v_deleted varchar2(128) := NULL;
v_exist number;
BEGIN
COMMIT;
IF REGEXP_INSTR(v_name, '^RQ.?\$', 1, 1) = 1 THEN
RAISE_APPLICATION_ERROR(-20000,
'cannot drop a script with a reserved name');
END IF;
-- delete script and access privilege entry in rq$scriptAccess by cascade
IF v_global THEN
v_user := 'RQSYS';
ELSE
v_user := SYS_CONTEXT ('USERENV', 'SESSION_USER');
END IF;
DELETE FROM rq$script WHERE owner = v_user and name = v_name
RETURNING name INTO v_deleted;
IF (NOT v_silent and v_deleted IS NULL) THEN
v_user := SYS_CONTEXT ('USERENV', 'SESSION_USER');
IF (NOT v_global) THEN
SELECT count(*) INTO v_exist
FROM rq$script WHERE name = v_name and owner = 'RQSYS';
IF (v_exist = 1) THEN
RAISE_APPLICATION_ERROR(-20000, '''' || v_name ||
''' is a global script');
ELSE
RAISE_APPLICATION_ERROR(-20000, 'script ''' || v_name ||
''' is not created by User ''' || v_user || '''');
END IF;
ELSE
SELECT count(*) INTO v_exist
FROM rq$script WHERE name = v_name and owner = v_user;
IF (v_exist = 1) THEN
RAISE_APPLICATION_ERROR(-20000, '''' || v_name ||
''' is created by User ''' || v_user ||
''' but not as global script');
ELSE
RAISE_APPLICATION_ERROR(-20000, '''' || v_name ||
''' is neither a global script, nor created by User ''' ||
v_user || '''');
END IF;
END IF;
END IF;
COMMIT;
END;
/
SHOW ERRORS
GRANT EXECUTE ON rqScriptDrop TO rqadmin;
--***************************************************************************--
--* (*) CONFIGURATION OPTIONS *--
--***************************************************************************--
--------------------------------- rqConfigSet ---------------------------------
--
CREATE PROCEDURE rqConfigSet(
v_name VARCHAR2,
v_value VARCHAR2)
AUTHID DEFINER
AS
BEGIN
UPDATE rq$config SET value = v_value WHERE name = v_name;
COMMIT;
END;
/
SHOW ERRORS
GRANT EXECUTE ON rqConfigSet TO rqadmin;
--***************************************************************************--
--* end of file rqadmin.sql *--
--***************************************************************************--
OHA YOOOO