Oracle 使用编译错误创建的函数
我需要 创建一个函数,该函数接受输入参数Oracle 使用编译错误创建的函数,oracle,plsql,Oracle,Plsql,我需要 创建一个函数,该函数接受输入参数k_city\u id(数据类型number),并从表k_vention返回指定城市对应的体育场名。如果一个城市有多个场馆,则应提出“本城市有多个场馆”的例外 这是我的职责: create or replace function find_venuee(k_city_id in number) return k_venue.stadium_name%type is venue_name k_venue.stadium_name%type;
k_city\u id
(数据类型number
),并从表k_vention
返回指定城市对应的体育场名
。如果一个城市有多个场馆,则应提出“本城市有多个场馆”的例外
这是我的职责:
create or replace function find_venuee(k_city_id in number)
return k_venue.stadium_name%type
is
venue_name k_venue.stadium_name%type;
begin
select stadium_name into venue_name from k_venue
where city_id = k_city_id;
return venue_name;
exception
when too_many_rows then
venue_name := 'This City has more than one venue';
return venue_name;
end;
/
它正在创建带有编译错误的函数。代码有什么问题 我们不知道这个表是什么样子的(所以我创建了自己的表);一切似乎都正常(参见下面的示例) 你能不能也发一些类似的帖子,让我们看看你做了什么,以及甲骨文是如何回应的
SQL> create table k_venue (city_id number, stadium_name varchar2(50));
Table created.
SQL>
SQL> create or replace function find_venuee (k_city_id in number)
2 return k_venue.stadium_name%type
3 is
4 venue_name k_venue.stadium_name%type;
5 begin
6 select stadium_name
7 into venue_name
8 from k_venue
9 where city_id = k_city_id;
10
11 return venue_name;
12
13 exception
14 when too_many_rows then
15 venue_name := 'This City has more than one venue';
16 return venue_name;
17 end;
18 /
Function created.
SQL>
SQL> insert into k_venue values (1, 'Stadium A');
1 row created.
SQL>
SQL> select find_Venuee(1) From dual;
FIND_VENUEE(1)
--------------------------------------------------------------------------------
Stadium A
SQL>
SQL> insert into k_venue values (1, 'Stadium B');
1 row created.
SQL>
SQL> select find_Venuee(1) From dual;
FIND_VENUEE(1)
--------------------------------------------------------------------------------
This City has more than one venue
SQL>
不能有函数的动态返回类型。您必须创建一个类型作为oracle pl/sql对象,然后使用它,或者直接使用“Varchar2”,正如您所说的那样,函数将根据收到的城市id返回场馆名称 请查找以下代码:
create or replace function find_venuee(k_city_id in number)
return varchar2 is
venue_name k_venue.stadium_name%type;
begin
select stadium_name into venue_name from k_venue
where city_id = k_city_id;
return venue_name;
exception
when too_many_rows then
venue_name := 'This City has more than one venue';
return venue_name;
end;
/
希望这会有所帮助
谢谢
Ankit.将错误添加到问题中并格式化您的代码运行
显示错误
要找出错误所在,在您告诉我们之前,我们只能猜测编译错误可能是什么。