sql ant task vs sqlplus:保留词“rem”
Posted
技术标签:
【中文标题】sql ant task vs sqlplus:保留词“rem”【英文标题】:Sql ant task versus sqlplus: reserver word "rem" 【发布时间】:2012-03-09 13:49:22 【问题描述】:我的 build.xml 存在 sql ant taks 问题。 我在 ant 中使用任务并创建列名为“rem”的表失败。我猜这是Oracle中的保留字。但是,关于这个问题,我有两个问题:
在 sqlplus 中不会出现此问题。即:它让我创建一个列名为“rem”的表。
我是否应该担心不属于 Oracle 的保留字。例如:mysql中的“go”?
谢谢。
【问题讨论】:
SQL 的大多数实现都允许您将字段名称包含在引号或反引号中。然后,您几乎可以拥有任何您喜欢的字段名称。但总的来说,您应该尽可能避免所有可能的保留字/关键字。除了避免人们可能造成的混淆之外,别无其他原因,SQL引擎就更不用说了。 在 Oracle 中将列名等用引号括起来时要小心...... Oracle 将允许您在用引号括起来时创建混合大小写的名称(如果没有括起来,您不能这样做)引号),从那时起您必须在引用这些名称时使用引号。例如,创建表 "xyzzy" - SELECT * FROM "xyzzy" 【参考方案1】:除非您打算同时使用这两种 RDBMS,否则我认为您无需担心 MySQL 保留字。
但是,首先要解决您的第二点:
虽然cagcowboy's answer 告诉您如何解决问题,但我只能要求您不要这样做。
我的东西必须用双引号括起来,然后你必须记住在任何地方都这样做。某些 UI (e.g. Toad) 需要初始化特殊选项。
实际上这很麻烦,正如Dems 和Davd Faber 所评论的那样,这可能会造成极大的混乱。
顺便说一句,go
似乎是 Oracle 中的保留作品,但不知道它是做什么的。
要解决您的第一个要点,rem
实际上并不是 Oracle 中的保留字 - only SQL*Plus- 并因此创建一个以 rem
作为列名的表。您的具体问题一定与蚂蚁有关。
【讨论】:
【参考方案2】:尝试将列放在双引号中...
“快速移动”
【讨论】:
以上是关于sql ant task vs sqlplus:保留词“rem”的主要内容,如果未能解决你的问题,请参考以下文章
PLS-00103:从 ant build 执行时遇到符号 /
对于 Java 8,需要使用哪个版本的 sonar-ant-task?
java 调用ant的自己定义task,默认不是build.xml 的一点问题