サイズの制約を取り除くことで修正します。必要ありません:
create or replace function logMessage (msg in varchar2)
return number is
begin
null;
return 1;
end logMessage;
/
あなたの機能はこれより少し複雑だと思いますか?
ドキュメントcreate function
のステートメントの完全な構文は次のとおりです。
CREATE [OR REPLACE] FUNCTION [Owner.]FunctionName
[(arguments [IN|OUT|IN OUT][NOCOPY] DataType [DEFAULT expr][,...])]
RETURN DataType [InvokerRightsClause] [DETERMINISTIC]
{IS|AS}
詳細については、興味があればたくさんの情報がありますが、ネット上の TECH の方が便利かもしれません。
なぜわからないのか、答えが見つからないのかというあなたの最初の質問への答えです。しかし、APCを引用するには:
これは面倒ですが、これが PL/SQL の仕組みなので、我慢しなければなりません。
簡単に言えば、実行時に何かがどれくらい長く続くかを知り、それに対処できるようにする必要があります。ただし、考慮できるオプションがいくつかあります。
メッセージの長さがわかっている場合は、変数を定義できます。そのデフォルト値はsubstr
パラメーターの a です。
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;