我在.sql脚本中有下面这行代码。不确定它是做什么的。它是等待用户输入dbuserid和password,还是从环境中获取这些值?&&表示什么?在test.sql文件中,在创建表之前,我看到下面这一行:
CONNECT &&usr/&&pass@&&dbname发布于 2010-07-19 12:54:05
来自OTN
单与号(&)和双与号(&&)都可以在语句中作为替代变量名的前缀。SQL_Plus对语句进行预处理并替换变量的值。然后执行该语句。如果之前未定义该变量,则在进行替换之前,SQL_Plus会提示您输入值。
如果将单个与符号前缀与未定义的变量一起使用,则不会存储在提示下输入的值。在语句中替换该值后,该值立即被丢弃,变量仍未定义。如果该变量被引用了两次,即使是在同一命令中,系统也会提示您两次。可以在每个提示下输入不同的值。
SQL*Plus不会再次提示您。
这是more about SQL*Plus Substitution Variables。
发布于 2010-07-19 12:53:08
“&”用于引用SQLPlus中的替代变量。可以使用DEFINE _keyword设置这些变量。或者,如果未使用此关键字指定,SQL_Plus将提示您输入变量的值,并在每次看到&variable时继续提示您
双'&‘告诉SQLPlus重用变量的第一个定义值。例如,如果系统根据您的连接代码片段提示您输入usr的值,则所有后续出现的&&usr _would都将替换为该值。在这种情况下,SQL_Plus将只提示您输入usr的值一次。
编辑:
是的,您可以从shell脚本中传入参数。示例:
$ cat a.sh
#!/bin/bash
# Ideally, you would retrieve the password from a secure
# location like a password safe/vault etc. Never hardcode
# the connection credentials
USER=scott
PASS=tiger
INST=orcl
sqlplus -s /nolog << EOF >> some_log_file.log
connect ${USER}/${PASS}@${INST}
set serveroutput on
select user from dual;
EOF
$ ./a.sh
$ cat some_log_file.log
USER
------------------------------
SCOTT
$ https://stackoverflow.com/questions/3278386
复制相似问题