调用函数,出现“必须声明××”

teemai 2010-07-19 04:59:17

1、创建一个函数
create or replace function fun_count
(score in number)
return number
is
t_score number;
begin
select score into t_score from cj where score=t_score;
return t_score;
exception
when no_data_found then
dbms_output.put_line('no data');
when others then
dbms_output.put_line('error');
end;

2、调用函数
var count number;
exec count:=fun_count(23);


调用函数出现如下错误:
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'COUNT'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2010-07-20
  • 打赏
  • 举报
回复
谢谢各位!问题解决了。


2、调用函数
var count number;
exec :count:=fun_count(23);



调用成功。上面的也可以执行成功!
minitoy 2010-07-19
  • 打赏
  • 举报
回复
按楼上的给你个执行版

SQL>
SQL> create or replace function fun_count
2 (score in number)
3 return number
4 is
5 t_score number;
6 begin
7 select id into t_score from test where NAME='aaaa';
8 return t_score;
9 exception
10 when no_data_found then
11 dbms_output.put_line('no data');
12 when others then
13 dbms_output.put_line('error');
14 end;
15 /

Function created

SQL>
SQL> declare
2 cont number;
3 begin
4 cont := fun_count(23);
5 dbms_output.put_line(cont);
6 end;
7 /

PL/SQL procedure successfully completed

SQL>
心中的彩虹 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 huxiweng 的回复:]
SQL code

1、创建一个函数
create or replace function fun_count
(score in number)
return number
is
t_score number;
begin
select score into t_score from cj where score=t_score;
……
[/Quote]

首先你这函数我觉得就有有点多余 传入个分数 在返回这个数字 没什么好大的作用
下面你调用的时候变量不要跟关键字一样
ngx20080110 2010-07-19
  • 打赏
  • 举报
回复
那把count改成其他名稱吧,如v_count
teemai 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ngx20080110 的回复:]
調用函數改成下面,試一下
declare
count number;
begin
count := fun_count(23);
dbms_output.put_line(count);
end;
[/Quote]

调用了还是出现错误:

SQL> declare
2 count number;
3 begin
4 count := fun_count(23);
5 dbms_output.put_line(count);
6 end;
7 /
dbms_output.put_line(count);
*
第 5 行出现错误:
ORA-06550: 第 5 行, 第 23 列:
PLS-00204: 函数或伪列 'COUNT' 只能在 SQL 语句中使用
ORA-06550: 第 5 行, 第 2 列:
PL/SQL: Statement ignored
ngx20080110 2010-07-19
  • 打赏
  • 举报
回复
調用函數改成下面,試一下
declare
count number;
begin
count := fun_count(23);
dbms_output.put_line(count);
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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