【发布时间】:2012-02-18 02:21:27
【问题描述】:
我有一个名为 BANKCUSTOMER 的表,其中包含以下列:
USERNAME NOT NULL VARCHAR2(11)
FAMILY_NAME NOT NULL VARCHAR2(25)
NAME NOT NULL VARCHAR2(25)
PASSWD NOT NULL VARCHAR2(6)
如果用户 USERNAME 和 PASSWORD 与数据库中的数据匹配,我想创建一个检查数据库的函数。如果登录成功,那么它应该打印出“登录成功!”否则“用户名或密码错误!”
我访问了一个 pl/sql 教程网站,看到了以下代码,我对其进行了一些修改,以便它可以与我的数据库一起使用,但是有些东西我不明白,这就是 z number 所做的和 @ 987654323@ 可以。有人可以为我解释一下。
create or replace function log_in(x in varchar2, y in varchar2)
return varchar2
as
z number;
begin
select 1
into z
from bankcustomer
where username=x
and passwd=y;
dbms_output.put_line('Login successful!');
exception
when no_data_found then
dbms_output.put_line('Wrong username or password!');
end;
我想通过写SELECT log_in() FROM dual; 来测试这个功能,看看它是否有效。当我写 SELECT log_in() FROM dual; 时,我收到一条错误消息:
从命令的第 1 行开始出错: 从双重选择登录() 命令行错误:1 列:7 错误报告: SQL 错误:ORA-06553:PLS-306:调用“LOG_IN”时参数的数量或类型错误 06553. 00000 - “PLS-%s: %s” *原因:
*行动:
如何解决?
【问题讨论】:
标签: sql oracle oracle11g ora-06553