在PL/SQL中,下面的代码将失败.它不允许定义varchar2参数的大小.你知道为什么吗?我如何解决它?
create or replace function logMessage(msg varchar2(2000))
return number as
begin
null;
return 1;
end logMessage;
/
Run Code Online (Sandbox Code Playgroud)
错误信息是
1/33 PLS-00103:遇到以下其中一项时遇到符号"("):
:=.),@%default character符号":="代替"("继续.
Ben*_*Ben 10
您可以通过删除大小约束来修复它.它不需要:
create or replace function logMessage (msg in varchar2)
return number is
begin
null;
return 1;
end logMessage;
/
Run Code Online (Sandbox Code Playgroud)
我假设你的功能稍微复杂一点吗?
文档中create function语句的完整语法是:
CREATE [OR REPLACE] FUNCTION [Owner.]FunctionName
[(arguments [IN|OUT|IN OUT][NOCOPY] DataType [DEFAULT expr][,...])]
RETURN DataType [InvokerRightsClause] [DETERMINISTIC]
{IS|AS}
Run Code Online (Sandbox Code Playgroud)
有很多的周围信息的细节,如果你有兴趣,但你会发现在网络上TECH更加有用.
回答你的第一个问题,为什么我不知道,也找不到答案.但引用APC:
这很烦人,但它是PL/SQL的工作方式,所以我们必须忍受它.
简单地说,你应该知道,在运行时长的东西是怎么回事是和能,因此,对付它.您可以考虑几个选项:
如果你知道你想要消息的长度,你可以定义一个变量,其默认值是substr参数的一个:
create or replace function logmessage ( msg in varchar2 ) return number is
l_msg varchar2(2000) := substr(msg,1,2000);
begin
return 1;
end;
Run Code Online (Sandbox Code Playgroud)
或者,您可以检查函数本身的长度:
create or replace function logmessage ( msg in varchar2 ) return number is
begin
if length(msg) > 2000 then
return 0;
end if;
return 1;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10174 次 |
| 最近记录: |