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';
我成功地创建了下面的过程,但是当我 运行 它时,我得到 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';