您可以通過刪除大小約束來修復它。它不是ne eded:
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:
這很煩人,但它的方式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;
或者,您可以檢查函數本身的長度:
create or replace function logmessage (msg in varchar2) return number is
begin
if length(msg) > 2000 then
return 0;
end if;
return 1;
end;
來源
2012-07-01 14:25:23
Ben