我必须使用dbms_assert.enquote_literal
来引用字符串。该字符串是模式名称,我不知道它是作为我的函数的参数。我唯一知道的是模式名称可能包含单引号。对于此类字符串,enquote_literal会因ORA-06502: PL/SQL: numeric or value error
而失败。是否有任何替代方法可以代替enquote_literal使用与enquote_literal相同的输出。
答案 0 :(得分:2)
不是一个好的解决方案,但是一个简单的解决方案
REPLACE(dbms_assert.enquote_literal(REPLACE(text,'''','''''')),
'''''','''');
输入文字
hello'world
输出文字
'hello'world'
如果您不需要出现报价
dbms_assert.enquote_literalreplace(text,'''',''));
答案 1 :(得分:0)
尝试' q'引用Read here。
select q'['<you string>']' from dual;
演示
SQL> select q'['Hello'workddl']' Col from dual;
COL
--------------
'Hello'workddl'