【问题标题】:How to ignore responding to stored '&lt' and '&gt' text in Oracle SQL statement?如何忽略对 Oracle SQL 语句中存储的“&lt”和“&gt”文本的响应?
【发布时间】:2015-12-13 18:59:56
【问题描述】:

在 SQL 命令行中编写下面的 sql 查询时遇到问题。它问我 “输入 lt 的值:” 然后给出错误

ORA-00933:SQL 命令未正确结束

我需要正确读取包含“&lt”或“&gt”作为字符串的列。如何编辑查询以使其正常工作?

Delete from authorization1 
where role = 'staff' AND object = ' /department/gradstudent/gpa' 
AND predicate = ' & l t ; 2.0') AND action = 'read' 

【问题讨论】:

  • 声明中的额外)。删除它
  • 谢谢,但还是同样的问题!

标签: sql oracle oracle11g sqlplus


【解决方案1】:

假设您使用SQL*PlusSQL Developer 作为前端,这个问题是&foo 是定义替换变量的语法。你可以

set define off;

在运行脚本之前禁用替换变量。这将阻止前端提示您输入值。

【讨论】:

  • 感谢您的回答。我正在使用 Oracle 11g 命令行并且“设置定义关闭”工作并阻止了输入消息,但记录没有被删除。但是,当我写“从 predicate1 中删除 predicate = ' & l t ; 2.0'”时,它被删除了。原始删除查询有问题。
  • @AliAlwohaibi - 您必须调查delete 语句的问题所在。从逻辑上讲,其他三个谓词之一一定是不正确的。 object = ' /department...' 谓词的前导空格对我来说看起来很可疑,但我不知道您的数据。 &、l、t 和 ; 之间的空格看起来也很可疑。
  • @AliAlwohaibi - 如果您通过以下方式查询这些记录,则会返回多少条记录:SELECT * FROM authorization1 where role = 'staff' AND object = ' /department/gradstudent/gpa' AND predicate = ' & l t ; 2.0') AND action = 'read'?
  • @AliAlwohaibi - ' /department/gradstudent/gpa' 中应该有一个前导空格吗?只是看起来有点奇怪……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多