sql - oracle sql - 使用双与号 (&&) 和双点 (..)
问题描述
我是 Oracle SQL 的新手。我遇到了以下声明:
CREATE TABLE &&DATABASE_ONE..TABLE_ONE(...);
上面的语句正在尝试创建一个表。我不确定我是否对..
and有正确的理解&&
。
我做了一些谷歌搜索,我发现这个链接说双点(..)将选择default schema
查询。
DATABASE_ONE
应该是模式名称,并且TABLE_ONE
应该是表名。
我对&&
在数据库名称前面使用感到困惑。谷歌搜索后,我发现一些帖子说这&&
意味着"Oracle will prompt the user for a value and will create a permanent variable"
。
有人可以解释&&
上面的陈述是如何工作的吗?如果我有任何误解,请纠正我。
解决方案
@Gary_W 涵盖了单 & 和双 &之间的区别。
双周期可能稍微不那么明显。从SQL*Plus 文档中:
如果您希望在替换变量之后立即附加字符,请使用句点将变量与字符分开。
如果您有一个时期:
&&DATABASE_ONE.TABLE_ONE
那么该句点将被视为替代变量名称的终止符,并将在此过程中使用。假设您输入的值是“HR”;替换将是:
old:select &&DATABASE_ONE.TABLE_ONE from dual
new:select HRTABLE_ONE from dual
select HRTABLE_ONE from dual
如您所见,模式和表名之间现在没有句点,从而为您提供了一个组合标识符,该标识符不代表您的意图。
使用您的表格:
&&DATABASE_ONE..TABLE_ONE
第二个时期是位于这两个元素之间的“正常”时期;一旦第一个被替换消耗掉,第二个仍然可以完成该功能:
old:select &&DATABASE_ONE..TABLE_ONE from dual
new:select HR.TABLE_ONE from dual
select HR.TABLE_ONE from dual
推荐阅读
- typescript - 如何验证 RunTypes 中具有未知属性的对象(打字稿小写对象)
- excel - 将值复制到不同工作表中的单元格。使用 vlookup 找到单元格
- flutter - CheckBox List Tile 将选定的值添加到不同的列表
- c# - 如果数据库调用失败,我们可以将项目移回 Channel
- node.js - 无法安装反应导航和手势
- powershell - 为什么运行shell脚本代码后窗口弹出并消失
- python - Django Private Channel - 如果是 self.object。#(消费者:一个或另一个:卖家#!= request.user:
- c - 我在简单的 C 循环中找不到错误,printf 不起作用
- laravel - Laravel 护照和 Shibboleth
- mysql - 选择mysql中所有出现次数超过9的主题的描述