【问题标题】:Sql ant task versus sqlplus: reserver word "rem"sql ant task vs sqlplus:保留词“rem”
【发布时间】:2012-03-09 13:49:22
【问题描述】:

我的 build.xml 存在 sql ant taks 问题。 我在 ant 中使用任务并创建列名为“rem”的表失败。我猜这是Oracle中的保留字。但是,关于这个问题,我有两个问题:

  1. 在 sqlplus 中不会出现此问题。即:它让我创建一个列名为“rem”的表。

  2. 我是否应该担心不属于 Oracle 的保留字。例如:mysql中的“go”?

谢谢。

【问题讨论】:

  • SQL 的大多数实现都允许您将字段名称包含在引号或反引号中。然后,您几乎可以拥有任何您喜欢的字段名称。但总的来说,您应该尽可能避免所有可能的保留字/关键字。除了避免人们可能造成的混淆之外,别无其他原因,SQL引擎就更不用说了。
  • 在 Oracle 中将列名等用引号括起来时要小心...... Oracle 将允许您在用引号括起来时创建混合大小写的名称(如果没有括起来,您不能这样做)引号),从那时起您必须在引用这些名称时使用引号。例如,创建表 "xyzzy" - SELECT * FROM "xyzzy"

标签: sql oracle ant


【解决方案1】:

除非您打算同时使用这两种 RDBMS,否则我认为您无需担心 MySQL 保留字。

但是,首先要解决您的第二点:

虽然cagcowboy's answer 告诉您如何解决问题,但我只能要求您不要这样做

我的东西必须用双引号括起来,然后你必须记住在任何地方都这样做。某些 UI (e.g. Toad) 需要初始化特殊选项。

实际上这很麻烦,正如DemsDavd Faber 所评论的那样,这可能会造成极大的混乱。

顺便说一句,go 似乎是 Oracle 中的保留作品,但不知道它是做什么的。

要解决您的第一个要点,rem 实际上并不是 Oracle 中的保留字 - only SQL*Plus- 并因此创建一个以 rem 作为列名的表。您的具体问题一定与蚂蚁有关。

【讨论】:

    【解决方案2】:

    尝试将列放在双引号中...

    “快速移动”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 2010-11-05
      相关资源
      最近更新 更多