我在Oracle中创建了一个过程,但在尝试执行它时遇到错误。下面列出了我创建此过程所采取的步骤:
SQL> ed getuserinfo
create or replace procedure getUserInfo
( p_username out Users.username%TYPE,
p_password out Users.password%TYPE ) IS
BEGIN
select username,password into p_username,p_password from users where username='yogi';
END;
/
SQL> exec getuserinfo
BEGIN getuserinfo; END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'GETUSERINFO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
问题是什么?如何解决?任何人都可以帮助我吗?
答案 0 :(得分:2)
您需要实际创建您尚未完成的过程。在end
之后需要一个分号,如果你在SQL * Plus中创建它,则需要添加/
以通知SQL * Plus该块已完成:
create or replace procedure getUserInfo
( p_username out Users.username%TYPE,
p_password out Users.password%TYPE ) IS
BEGIN
select username,password into p_username,p_password from users;
END;
/
show error
之后添加show error
总是明智的,这样任何错误都会以可理解的格式返回到控制台。
答案 1 :(得分:2)
您实际执行了创建过程语句吗?你有没有“创建过程”。信息? Oracle不知道您的getuserinfo过程这一事实告诉我该语句未执行。
答案 2 :(得分:2)
我认为这是错误的程序!!通话应如下所示:
SQL>var var1 varchar2(50);
SQL>var var2 varchar2(50);
SQL> exec getuserinfo(:var1, :var2);
SQL> print var1, var2;
玩得开心!!
答案 3 :(得分:1)
调用程序时需要指定out参数。
DECLARE
x Users.username%TYPE;
y Users.password%TYPE;
BEGIN
getuserinfo(x, y);
DBMS_OUTPUT.PUT_LINE('username: ' || x || ', password: ' || y);
END;