Oracle SQL 过程错误我无法调试

Oracle SQL procedure error I can't debug

我成功地创建了下面的过程,但是当我 运行 它时,我得到 ORA-01422: exact fetch returns more than requested number of rows 错误。 任何人都可以帮助解决我的问题。谢谢

CREATE OR REPLACE PROCEDURE proc_create_new_user AUTHID CURRENT_USER IS
    vc_username VARCHAR2(50);
    vc_new_user VARCHAR2(100);
BEGIN
    SELECT username
    INTO vc_username FROM marketing;

FOR i IN 1..3 LOOP
    vc_new_user:=
     'CREATE USER '||vc_username||' IDENTIFIED BY password'||(i);
    DBMS_OUTPUT.PUT_LINE('USER '||vc_new_user||' HAS BEEN CREATED');
    EXECUTE IMMEDIATE vc_new_user;
END LOOP;
END proc_create_new_user;
/

 EXECUTE proc_create_new_user;


error: ORA-01422: exact fetch returns more than requested number of rows

您的 select 为您提供了多个记录,您试图将这些记录保存在一个只能保存一个值的变量中。尝试在 select 语句中使用 WHERE 子句。

SELECT username
INTO vc_username FROM marketing
WHERE userid = '1234';