Oracle数据库中的amp;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都会将&符号视为替换字符,包括在字符串中. (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |