Oracle11g 软件包是如何工作的?

Oracle11g 软件包是如何工作的?,oracle11g,package,Oracle11g,Package,我创建了一个包含两个过程的包,其中一个是创建用户。然而,当我执行这个过程时,虽然成功了,但我没有看到用户被创建 create or replace PACKAGE APPLICATIONPACKAGE AS procedure CreateSingleUser( userName in VARCHAR2, rolename in VARCHAR2); PROCEDURE DeleteUser(userName in varchar2); END APPLICAT

我创建了一个包含两个过程的包,其中一个是创建用户。然而,当我执行这个过程时,虽然成功了,但我没有看到用户被创建

    create or replace PACKAGE APPLICATIONPACKAGE AS 
    procedure CreateSingleUser( userName in VARCHAR2, rolename in VARCHAR2);
    PROCEDURE DeleteUser(userName in varchar2);
    END APPLICATIONPACKAGE;
    /
    create or replace PACKAGE BODY                                                                             
    APPLICATIONPACKAGE AS

     procedure CreateSingleUser( userName in VARCHAR2, rolename in VARCHAR2)
     AS
    dynamicsql  VARCHAR2 (2000);
    BEGIN

    BEGIN
     if rolename='APPADMIN' OR rolename='APPMODIFIER' or rolename='APPVIEWER'  
     THEN --limit user input to specific roles
 ----assign dynamic sql to a variable for excecution by excecute immediate
     dynamicsql :='CREATE USER ' || userName|| ' IDENTIFIED BY pass1234 DEFAULT  
      TABLESPACE USERS QUOTA 1M ON USERS PASSWORD EXPIRE';
      DBMS_OUTPUT.PUT_LINE (dynamicsql);
     EXECUTE IMMEDIATE dynamicsql;
     EXECUTE IMMEDIATE 'GRANT ' || rolename || ' TO ' || userName || '';
     EXECUTE IMMEDIATE 'GRANT CREATE SESSION TO ' || userName; 
     else
     DBMS_OUTPUT.PUT_LINE('Not a valid role...sorry role specified not given to    
      a user');
     END IF;
     END;
     END CreateSingleUser;
     PROCEDURE DeleteUser(userName in varchar2)
      AS
   deleteSql  VARCHAR2 (500);

   BEGIN
    deleteSql :='DROP USER ' || userName; -- assign drop user command to    
    variable delete sql
    DBMS_OUTPUT.PUT_LINE (deleteSql);
    EXECUTE IMMEDIATE deleteSql;  -- excecute the sql dynamically;
    END DeleteUser;
    ----- end procedure delete user-------

    END APPLICATIONPACKAGE;

我像applicationpackage.createsingleuser('John','appadmin')一样执行;字符串比较区分大小写。如果传递小写字符串“appadmin”并将其与大写字符串“appadmin”进行比较,则该比较将不会成功。我的猜测是,如果你的
语句的计算结果为false,那么你没有启用
dbms\u输出
,你也看不到
dbms\u输出。从你的
其他
中放入行
(一个原因是你不应该依赖任何人看到写入
dbms\u输出的输出
)。