gpt4 book ai didi

database - 替换变量语法 '&1..' 如何用于用户/模式定界符 (“.”)

转载 作者:太空狗 更新时间:2023-10-30 01:54:00 26 4
gpt4 key购买 nike

我在一个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

点 ( . ) 将点后面的每个非空格字符附加到输入的值。注意 table 的值在点附加到输入的 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 中的两个点不是特殊的运算符(operator)。第一个点表示追加;第二个点是文字。它看起来像 &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将停止替换。如果您需要在查询或过程中使用实际的文字 & 符号,请使用它,因为无论您将它放在何处,包括在字符串中,SQLPlus 都会将 & 符号视为替换字符。

关于database - 替换变量语法 '&1..' 如何用于用户/模式定界符 (“.”),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com