【发布时间】:2014-12-09 07:01:18
【问题描述】:
假设我有一个列值为aaa'gh,它会在 oracle 中抛出错误,说 sql 命令没有正确结束。
我的问题是,如果我不知道我的值中有多少 ',我该如何安全地逃脱它们。
【问题讨论】:
-
逃避你将要做什么。
-
请在 google 上搜索“Oracle 中的转义字符”。 www.dba-oracle.com/tips_oracle_escape_characters.htm
-
@Exhausted 我有一个从数据库中获取的变量。当该变量中包含
'时,它会产生问题。嗨,AK47,当我手头有价值时,我知道如何逃跑。假设我不知道值是什么? -
您正在选择一个变量,您将使用它来构建动态 SQL 来执行?然后,如果变量包含
',动态 SQL 会失败?如何使用绑定变量来包含变量内容而不是将其连接到动态 SQL 字符串中?这样就不需要转义,也没有 SQL 注入的机会,也不会用许多独特的语句杀死共享池。 (当然取决于您的实际用例 - 在某些情况下绑定变量解决方案是不可能的,但我们无法从您的描述中看出 ;-) -
嗨,Kim,这里是基于客户端的脚本语言和 oracle 之间的通信。更准确地说,我正在使用一个 shell 脚本,在该脚本中我将此列值作为参数传递,从而调用我的客户端脚本。在客户端脚本中,我正在调用 oracle sql 并使用此列值来获取某些内容。在此获取过程中,如果我的列具有此
'值,则尝试执行此 sql 时我的客户端脚本将失败