2017-04-19 43 views
0

入力(文字データ)を受け取り、特定の文字のセットを置き換える関数を作成しようとしています。私がこれまでに作成した
機能は、私は、この関数がコンパイルされるように取得できますか、次のOracle 12c:ORA-06575 name_of_funcパッケージまたは関数が無効な状態です

CREATE FUNCTION name_of_func(input VARCHAR(4000) 
    RETURN VARCHAR(4000) IS 
    BEGIN 
    return replace(replace(replace(replace(replace(input, '\', '\\'), CHR(10), '\n'), CHR(13) || CHR(10), '\n'), CHR(13), '\n'),'"', '\"'); 
    END name_of_func; 

のですか?

答えて

1

あなたは、関数定義のパラメータのサイズを指定することはできません。

SQL> CREATE OR REPLACE FUNCTION name_of_func(input VARCHAR) 
    2 RETURN VARCHAR IS 
    3 BEGIN 
    4  return replace(replace(replace(replace(replace(input, '\', '\\'), CHR(10), '\n'), CHR(13) || CHR(10), '\n'), CHR(13), '\n'),'"', '\"'); 
    5 END name_of_func; 
    6/

Function created. 

SQL> select name_of_func('dfghjk') from dual; 

NAME_OF_FUNC('DFGHJK') 
-------------------------------------------------------------------------------- 
dfghjk 

SQL> 
+0

まだ同じエラーメッセージが表示されています... –

+0

これはコンパイルされ、動作します。ただ表示します。同じコードを実行してもよろしいですか? – Aleksej

+0

私はもう一度コードを試しました。今それは働いた。ありがとうございました。 –

1

あなたはまた、あなたが\r\nとなるように、代替の順序を入れ替える必要があり、関数宣言で変数のサイズを指定することはできません\nまたは\rの前に交換してください。

CREATE FUNCTION name_of_func(
    input VARCHAR2 
) RETURN VARCHAR2 
IS 
BEGIN 
    return replace(
      replace(
      replace(
       replace(
       replace(input, '\', '\\'), 
       CHR(13)||CHR(10), 
       '\n' 
       ), 
       CHR(10), 
       '\n' 
      ), 
      CHR(13), 
      '\n' 
      ), 
      '"', 
      '\"' 
     ); 
END name_of_func; 
+0

ああ、私はそれを認識しませんでした。それを指摘していただきありがとうございます。 –

関連する問題