我成功创建了以下程序,但是当我运行它时,我得到ORA-01422:精确提取返回超过请求的行数错误。 任何人都可以帮助解决我的问题。感谢
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
答案 0 :(得分:3)
您的选择为您提供了多条记录,您尝试将其保存在只能包含一个值的变量中。尝试在select语句中使用WHERE子句。
SELECT username
INTO vc_username FROM marketing
WHERE userid = '1234';