函数调用错误:wrong number or types of arguments in call to 'ID_IS_GOOD'

theoffspring 2010-04-13 07:37:13
函数:
CREATE OR REPLACE FUNCTION id_is_good
(i_student_id IN NUMBER)
RETURN BOOLEAN
AS
v_id_cnt NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_id_cnt
FROM student
WHERE student_id = i_student_id;
RETURN 1 = v_id_cnt;
EXCEPTION
WHEN OTHERS
THEN
RETURN FALSE;
END id_is_good;


调用:

1 declare
2 v_local_first_name student.first_name%type;
3 v_local_last_name student.last_name%type;
4 rst BOOLEAN ;
5 begin
6 rst := id_is_good(&sv,v_local_first_name, v_local_last_name);
7 dbms_output.put_line(rst);
8 end;



运行的时候在pl/sql developer,我输入一个数字,但报错:
ORA-06550: line 6, column 10:
PLS-00306: wrong number or types of arguments in call to 'ID_IS_GOOD'
ORA-06550: line 6, column 3:
PL/SQL: Statement ignored
ORA-06550: line 7, column 3:
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'
ORA-06550: line 7, column 3:
PL/SQL: Statement ignored

我实在是看不出来哪错了,plsql就是这样,提示得总是啰哩啰嗦,还没说到点上。就像它的文档写得一样烂。
...全文
2847 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2010-04-15
  • 打赏
  • 举报
回复
输出'号,除了函数chr(39)还可以用两个'来转义
select 'It''s a pen' from dual;
安特矮油 2010-04-14
  • 打赏
  • 举报
回复
直接输出number就OK了撒 1为TRUE 0为flase
theoffspring 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhangwonderful 的回复:]
你这个函数只需要一个参数,怎么传入了三个参数呀。参数个数不一致,请修改。
[/Quote]

昨天晚上贴错了,实际上给一个参数也是这样的。后来参考2楼的提示,发现put_line不能直接输入booelan型的,真是弱智啊。

请问,转义字符怎么输出,我要在put_line中输出一个单引号,除了用chr函数,有无转义字符可用?
永生天地 2010-04-13
  • 打赏
  • 举报
回复
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'

这句就说明了问题。。。
tangren 2010-04-13
  • 打赏
  • 举报
回复
1、调用时参数个数太多。
2、dbms_output.put_line函数不能打印blooean类型的值。
--如果需要打印,可以这样
if rst then
dbms_output.put_line('TRUE');
else
dbms_output.put_line('FALSE');
end if;
zhangwonderful 2010-04-13
  • 打赏
  • 举报
回复
你这个函数只需要一个参数,怎么传入了三个参数呀。参数个数不一致,请修改。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧