以下函数检查名为ZIPCODE的表中是否存在邮政编码:
0
0
1
0
0
2
3
0
0
0
0
3
3
1
6
5
6
1
6
6
为了测试这个函数,我发出了以下语句,该语句应返回false,因为ZIPCODE表中存在作为参数传递的邮政编码:
create or replace function zip_does_not_exist(i_zip in zipcode.zip%type)
return boolean
as
v_zip zipcode.zip%type;
begin
select zip into v_zip
from zipcode
where zip = i_zip;
if v_zip is not null then
return false;
else
return true;
end if;
end;
/
但是,我在尝试运行此代码时收到此消息:
select zip_does_not_exist('00914') from dual;
这不应该发生,因为' 00914'是作为参数(varchar2(5))所需的正确数据类型。我为什么收到这条消息?
答案 0 :(得分:5)
尝试将其称为:
create or replace function zip_does_not_exist(i_zip in zipcode.zip%type)
return pls_integer
as
v_zip zipcode.zip%type;
begin
select zip into v_zip
from zipcode
where zip = i_zip;
if v_zip is not null then
return 0;
else
return 1;
end if;
end;
/
然后你会成功致电:
select zip_does_not_exist('00914') from dual;
因为,不能将boolean设置为sql语句的返回变量。