Oracle 12c:ORA-06575包或函数名\u的\u func处于无效状态
我正在尝试创建一个函数,该函数接受输入(字符数据)并替换一组特定字符。Oracle 12c:ORA-06575包或函数名\u的\u func处于无效状态,oracle,oracle12c,Oracle,Oracle12c,我正在尝试创建一个函数,该函数接受输入(字符数据)并替换一组特定字符。 到目前为止,我创建的函数如下 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
到目前为止,我创建的函数如下
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>
不能在函数定义中指定参数的大小:
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>
您不能在函数声明中指定变量大小,而且,您需要交换替换顺序,以便在单独处理
\n
或\r
之前替换\r\n
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;
您不能在函数声明中指定变量大小,而且,您需要交换替换顺序,以便在单独处理
\n
或\r
之前替换\r\n
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;
这是汇编和工作;只是展示一下。你确定你运行的是相同的代码吗?这可以编译并工作;只是展示一下。您确定运行相同的代码吗?