首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内部的错误参数(oracle)

函数内部的错误参数(oracle)
EN

Stack Overflow用户
提问于 2019-03-11 07:54:00
回答 2查看 55关注 0票数 0

我的基本职能是:

代码语言:javascript
复制
create or replace function t_owner(tname in varchar2, oname out varchar2)
return varchar2
is
begin
  select owner into oname from table where table_name = 'tname';
  return oname;
end;

select t_owner('table_test') from dual;

当我这么说的时候,我就明白了:

ORA-06553:请-306:调用“T_OWNER”的参数数目或类型错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-11 07:55:50

函数不应该有OUT参数;它们无论如何都会返回该值。所以:

代码语言:javascript
复制
create or replace function t_owner(tname in varchar2)
  return varchar2  
is
  oname table.owner%type;       --> declare a local variable which will be returned
begin
  select owner into oname from table where table_name = tname;
  return oname;
end;

如果要使用OUT参数,请切换到过程:

代码语言:javascript
复制
create or replace procedure t_owner(tname in varchar2, oname out varchar2)
is
begin
  select owner into oname from table where table_name = tname;
end;

你会把它叫做

代码语言:javascript
复制
declare
  l_out table.owner%type;
begin
  t_owner('table_test', l_out);
  dbms_output.put_line(l_out);
end;
票数 1
EN

Stack Overflow用户

发布于 2019-03-11 07:56:10

oname应该是局部变量,而不是输出参数,tname不应该作为字符串引用,而应该作为输入参数引用。

代码语言:javascript
复制
create or replace function t_owner(tname in varchar2)
return varchar2
is
    oname table.owner%type;
begin
    select owner into oname 
    from table 
    where table_name = tname;

    return oname;
end;

select t_owner('table_test') from dual;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55097353

复制
相关文章

相似问题

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