Sql 包含单引号的字符串的enquote_文字的替代方法
我必须使用Sql 包含单引号的字符串的enquote_文字的替代方法,sql,oracle,Sql,Oracle,我必须使用dbms\u assert.enquote\u literal来输入字符串。字符串是架构名称,我不知道,因为它是函数的一个参数。我只知道模式名可能包含一个引号。对于此类字符串,enquote_literal失败,出现ORA-06502:PL/SQL:numeric或value错误。是否有任何替代方案可以替代enquote_literal,以提供与enquote_literal相同的输出。不是一个好的解决方案,但一个简单的解决方案是 REPLACE(dbms_assert.enquote
dbms\u assert.enquote\u literal
来输入字符串。字符串是架构名称,我不知道,因为它是函数的一个参数。我只知道模式名可能包含一个引号。对于此类字符串,enquote_literal失败,出现ORA-06502:PL/SQL:numeric或value错误
。是否有任何替代方案可以替代enquote_literal,以提供与enquote_literal相同的输出。不是一个好的解决方案,但一个简单的解决方案是
REPLACE(dbms_assert.enquote_literal(REPLACE(text,'''','''''')),
'''''','''');
输入文本
hello'world
输出文本
'hello'world'
如果您不需要报价单出现一次
dbms_assert.enquote_literalreplace(text,'''',''));
这不是一个好的解决方案,但一个简单的解决方案是
REPLACE(dbms_assert.enquote_literal(REPLACE(text,'''','''''')),
'''''','''');
输入文本
hello'world
输出文本
'hello'world'
如果您不需要报价单出现一次
dbms_assert.enquote_literalreplace(text,'''',''));
试试“q”引号
试试“q”引号
在使用
dbms\u assert.enquote\u literal
之前,您不能执行替换(文本“,”)
或在最终文本中需要单引号吗?@SudiptaMondal是的,我在最终文本中需要单引号。在使用dbms\u assert.enquote\u literal
之前,您不能执行替换(文本“,”,”))
或者您需要在最终文本中使用单引号吗?@SudiptaMondal是的,我需要在最终文本中使用单引号。与dbms_assert.enquote_literal一样,它在sql注入攻击中的安全性如何?而且我不能在plsql块中使用它,因为字符串是作为函数参数而不是硬编码的。@user1612078。你看过我分享的链接了吗。您没有发现PLSQL中的用法吗。当您尝试使用动态SQL时,SQL注入也会出现。我看不到您在问题中的任何地方使用动态sql,例如dbms_assert.enquote_literal,它在sql注入攻击中的安全性如何?此外,如果字符串作为函数参数而不是硬编码的,我也不能在plsql块中使用它。@user1612078。你看过我分享的链接了吗。您没有发现PLSQL中的用法吗。当您尝试使用动态SQL时,SQL注入也会出现。在你的问题中,我没有看到你在任何地方使用动态sql