Oracle数据库中的&1 ..意味着什么

前端之家收集整理的这篇文章主要介绍了Oracle数据库中的&1 ..意味着什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个oracle脚本中看到了这一行

SELECT COUNT(*) INTO version1 FROM &1..xxdt WHERE version = 3310;

我不明白& 1 ..部分.我认为xxdt是表的名称,那么前面的& 1 ..是什么东西呢?

解决方法

& 1提示输入用户输入的值.注意输入的值mytable如何替换下面的& 1:

sql> SELECT COUNT(*) FROM &1 WHERE col1 = 12;
Enter value for 1: mytable
old   1: SELECT COUNT(*) FROM &1 WHERE col1 = 12
new   1: SELECT COUNT(*) FROM mytable WHERE col1 = 12

  COUNT(*)
----------
         0

点(.)将点后面的每个非空格字符附加到输入的值.请注意点后的值表如何附加到输入的my:

sql> SELECT COUNT(*) FROM &1.table WHERE COL1 = 12;
Enter value for 1: my
old   1: SELECT COUNT(*) FROM &1.table WHERE COL1 = 12
new   1: SELECT COUNT(*) FROM mytable WHERE COL1 = 12

  COUNT(*)
----------
         0

& 1..xxdt中的两个点不是特殊的运算符.第一个点意味着追加;第二个点是字面的.看起来示例中的& 1用于提示架构/所有者名称.请注意下面我如何输入ed和& 1..mytable转换为ed.mytable:

sql> SELECT COUNT(*) FROM &1..mytable WHERE COL1 = 12;
Enter value for 1: ed
old   1: SELECT COUNT(*) FROM &1..mytable WHERE COL1 = 12
new   1: SELECT COUNT(*) FROM ed.mytable WHERE COL1 = 12

  COUNT(*)
----------
         0

附录:David Aldridge提出的一个很好的建议,包括对SET DEFINE的快速解释,它与变量替换相辅相成.开始…

上面的替换是由sqlPlus完成的,并且可以使用SET DEFINE控制其行为:

> SET DEFINE ON将允许替换并使用定义的替换字符.这通常是sqlPlus的默认值,当我运行上面的查询时就是这种情况.> SET DEFINE< char>设置替换字符. &符号(&)是通常的默认值. sqlPlus仅接受替换字符的非字母数字,非空格字符.请注意,在使用Oracle十多年的时间里,我从来没有必要更改此值.> SET DEFINE OFF将停止替换.如果你需要在查询或proc中有一个实际的文字&符号,请使用它,因为无论你把它放在哪里,sqlPlus都会将&符号视为替换字符,包括在字符串中.

猜你在找的Oracle相关文章