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;

如何将此功能汇编?

您无法在函数定义中指定参数的大小:

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>

您不能在函数声明中指定变量大小,此外,您需要交换替换的顺序,以便在单独处理nr之前替换rn

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;

最新更新