集計値を含む列を持つ VIEW を作成しました (varchar2 データ型で出力を格納します)。一部のレコードは最大制限を超えています (varchar2(4000) など)。長さをチェックし、必要に応じて文字列を作成する PL/SQL 関数が提案されました。
チェックして、構文エラーを修正しようとしましたが、
CREATE OR REPLACE
FUNCTION SUBURL(col1 IN VARCHAR2, col2 IN varchar2)
RETURN varchar2
IS
v_result_string varchar2(4000);
v_length varchar2(4000);
BEGIN
IF (length (col1) + length (col2) ... <= 4000) then return col1 || col2 || ...
END IF;
-- build the string and check the length for every column you contatenate
v_result_string := col1;
if (length(v_result_string) + length (col2) > 4000) THEN
-- add as much of col2 as you can up to a total of 4000
v_length := 4000 - length(v_result_string);
v_result_string := v_result_string + substr(col2, 1, v_length);
return v_result_string;
end if;
end suburl;
今回は2つのエラー、
エラー(7,35): PLS-00103: 記号「.」が見つかりました。次のいずれかを期待する場合: . ( ) , * % & = - + </> at in is mod 剰余 not rem => <> or != or ~= >= <= <> and or like like2 like4 likec as between || member submultiset 記号「.」無視されました。
エラー(7,76): PLS-00103: 記号「.」が見つかりました。次のいずれかを予期する場合: ( - + case mod new null continue avg count current max min before sql stddev sum difference execute forall merge time timestamp interval date pipe