Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 包含单引号的字符串的enquote_文字的替代方法_Sql_Oracle - Fatal编程技术网

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