MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/R/server/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/R/server/rqadmin.sql

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