加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – PL / SQL函数参数

发布时间:2021-05-21 01:48:19 所属栏目:站长百科 来源:网络整理
导读:在PL / SQL中,下面的代码将失败.它不应承界说varchar2参数的巨细.你知道为什么吗?我怎样办理它? create or replace function logMessage(msg varchar2(2000))return number asbegin null; return 1;end logMessage;/ 错误信息是 1/33 PLS-00103: Encounter

在PL / SQL中,下面的代码将失败.它不应承界说varchar2参数的巨细.你知道为什么吗?我怎样办理它?

create or replace function logMessage(msg varchar2(2000))
return number as
begin
    null;    
    return 1;
end logMessage;
/

错误信息是

1/33 PLS-00103: Encountered the symbol “(” when expecting
one of the following:

:= . ),@ % default character The symbol “:=” was substituted for
“(” to continue.

您可以通过删除巨细束缚来修复它.它不必要:
create or replace function logMessage (msg in varchar2)
return number is
begin
    null;    
    return 1;
end logMessage;
/

我假设你的成果轻微伟大一点吗?

create function语句from the documentation的完备语法是:

CREATE [OR REPLACE] FUNCTION [Owner.]FunctionName 
     [(arguments [IN|OUT|IN OUT][NOCOPY] DataType [DEFAULT expr][,...])]
     RETURN DataType [InvokerRightsClause] [DETERMINISTIC]
     {IS|AS}

假如您有乐趣,可以在the specifics阁下得到大量信息,但您也许会发明TECH on the Net更有效.

答复你的第一个题目,为什么我不知道,也找不到谜底.可是to quote APC:

This is annoying but it’s the way PL/SQL works so we have to live with
it.

简而言之,您应该在运行时知道将会有多长时刻,而且可以或许处理赏罚它.您可以思量几个选项:

假如你知道你想要动静的长度,你可以界说一个变量,其默认值是参数的substr:

create or replace function logmessage ( msg in varchar2 ) return number is

   l_msg varchar2(2000) := substr(msg,1,2000);

begin
   return 1;
end;

可能,您可以搜查函数自己的长度:

create or replace function logmessage ( msg in varchar2 ) return number is

begin

   if length(msg) > 2000 then
      return 0;
   end if;

   return 1;
end;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读