Oracle:尝试创建用户时“缺少或无效选项”

问题描述 投票:0回答:1

我有一张桌子:

create table NHAN_VIEN (
    Ma_nhan_vien varchar2(5) not null,
    Ma_thu_vien char(3),
    Loai_nhan_vien char(3) not null,
    ...
    primary key (Ma_nhan_vien),
    constraint fk_NV_TV
    foreign key (Ma_thu_vien)
    references THU_VIEN(Ma_thu_vien),
    constraint fk_NV_LN
    foreign key (Loai_nhan_vien)
    references LOAI_NHAN_VIEN(Ma_loai_nhan_vien)
);

和程序:

CREATE OR REPLACE PROCEDURE HW31_CREATEUSER
AS
    CURSOR CUR IS (SELECT Ma_nhan_vien
                    FROM NHAN_VIEN
                    WHERE UPPER(Ma_nhan_vien) NOT IN (SELECT USERNAME
                                        FROM ALL_USERS));
    STRSQL VARCHAR(2000);
    USR VARCHAR2(5);
BEGIN
    OPEN CUR;
    STRSQL := 'ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE';
    EXECUTE IMMEDIATE(STRSQL);
    LOOP
        FETCH CUR INTO USR;
        EXIT WHEN CUR%NOTFOUND;
            
        STRSQL := 'CREATE USER '||USR||' IDENTIFIED BY '||USR;
        EXECUTE IMMEDIATE(STRSQL); -- These didn't work
        STRSQL := 'GRANT CONNECT TO '||USR;
        EXECUTE IMMEDIATE(STRSQL); -- These didn't work
    END LOOP;
    STRSQL := 'ALTER SESSION SET "_ORACLE_SCRIPT" = FALSE';
    EXECUTE IMMEDIATE(STRSQL);
    CLOSE CUR;
END;

我的意思是在 NHAN_VIEN 表中创建每个用户。 但是当我执行 HW31_CREATEUSER 时,我的 sqldeveloper 说:

BEGIN HW31_CREATEUSER; END;
Error report -
ORA-00922: missing or invalid option
ORA-06512: at "SYS.HW31_CREATEUSER", line 18
ORA-06512: at line 1
00922. 00000 -  "missing or invalid option"

如果删除

EXECUTE IMMEDIATE(STRSQL);
,我可以运行我的程序 如果有任何不清楚的地方请告诉我

oracle procedure execute
1个回答
0
投票

您需要在相关属性(用户/密码)周围加上引号,否则您很容易因为 NHAN_VIEN 源中的数据而遇到此错误,例如

SQL> create user demo1 identified by abc;    -- abc is OK

User created.

SQL> create user demo2 identified by 9abc;   -- 9abc is not
create user demo2 identified by 9abc
                                 *
ERROR at line 1:
ORA-00922: missing or invalid option


SQL> create user demo2 identified by "9abc";  -- quotes to fix

User created.
© www.soinside.com 2019 - 2024. All rights reserved.