首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试函数错误ORA-00923

测试函数错误ORA-00923
EN

Stack Overflow用户
提问于 2018-05-17 18:59:25
回答 1查看 104关注 0票数 1

我正在尝试创建一个FUNCTION,它获取输入的参数的位置,这是在测试函数时输入的id,它不能工作,给出了错误ORA-00923

代码语言:javascript
复制
create or replace FUNCTION GET_LOCATION (l_con_id in NUMBER)
    RETURN VARCHAR2 
  AS 
    LOCATION VARCHAR2(30);
  BEGIN
    SELECT LOCATION 
      INTO LOCATION 
      FROM LDS_CONSULTANT 
      WHERE CONSULTANT_ID = l_con_id;

    RETURN LOCATION;
  END;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 19:57:04

这是我的建议。

首先,一个简单的测试用例:

代码语言:javascript
复制
SQL> create table lds_consultant
  2  (consultant_id number,
  3   location      varchar2(30));

Table created.

SQL> insert into lds_consultant
  2    select 1, 'New York' from dual union
  3    select 2, 'London'   from dual;

2 rows created.

A职能:

  • 参数的名称,使其名称与列名明显不同。让它继承列数据类型
  • 返回值也是如此。例如,在其名称前面加上"L_“表示它是一个局部变量。
  • 在SELECT语句中使用MAX函数是避免TOO_MANY_ROWS或NO_DATA_FOUND错误的简单方法。不过,如果有必要的话,我建议你妥善处理
代码语言:javascript
复制
SQL> create or replace function get_location
  2    (par_consultant_id in lds_consultant.consultant_id%type)
  3  return lds_consultant.location%type
  4  is
  5    l_location lds_consultant.location%type;
  6  begin
  7    select max(l.location)
  8      into l_location
  9      from lds_consultant l
 10      where l.consultant_id = par_consultant_id;
 11    return l_location;
 12  end;
 13  /

Function created.

最后,你叫它的方式:选择标准的方式.从双重

代码语言:javascript
复制
SQL> select get_location(2)  result_1,
  2         get_location(-1) result_2
  3  from dual;

RESULT_1                       RESULT_2
------------------------------ ------------------------------
London

SQL>

编辑

由于Apex使用PL/SQL,您必须声明一个局部变量并将该函数的结果放入其中。就像这样:

代码语言:javascript
复制
declare
  l_result lds_consultant.location%type;
begin
  l_result := get_location(:P1_CONSULTANT_ID);
end;

或者,如果它是一个报表,您可以将它包含在SELECT语句中

代码语言:javascript
复制
select l.consultant_id, 
       l.consultant_name,
       get_location(l.consultant_id) location
from lds_consultant l
order by l.consultant_name;

顺便说一句,从Oracle的任何地方选择双重作品(包括Apex)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50398734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档