首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于sql脚本

关于sql脚本
EN

Stack Overflow用户
提问于 2010-07-19 12:02:27
回答 2查看 408关注 0票数 0

我在.sql脚本中有下面这行代码。不确定它是做什么的。它是等待用户输入dbuserid和password,还是从环境中获取这些值?&&表示什么?在test.sql文件中,在创建表之前,我看到下面这一行:

代码语言:javascript
复制
CONNECT &&usr/&&pass@&&dbname
EN

回答 2

Stack Overflow用户

发布于 2010-07-19 12:54:05

来自OTN

单与号(&)和双与号(&&)都可以在语句中作为替代变量名的前缀。SQL_Plus对语句进行预处理并替换变量的值。然后执行该语句。如果之前未定义该变量,则在进行替换之前,SQL_Plus会提示您输入值。

如果将单个与符号前缀与未定义的变量一起使用,则不会存储在提示下输入的值。在语句中替换该值后,该值立即被丢弃,变量仍未定义。如果该变量被引用了两次,即使是在同一命令中,系统也会提示您两次。可以在每个提示下输入不同的值。

SQL*Plus不会再次提示您。

这是more about SQL*Plus Substitution Variables

票数 1
EN

Stack Overflow用户

发布于 2010-07-19 12:53:08

“&”用于引用SQLPlus中的替代变量。可以使用DEFINE _keyword设置这些变量。或者,如果未使用此关键字指定,SQL_Plus将提示您输入变量的值,并在每次看到&variable时继续提示您

双'&‘告诉SQLPlus重用变量的第一个定义值。例如,如果系统根据您的连接代码片段提示您输入usr的值,则所有后续出现的&&usr _would都将替换为该值。在这种情况下,SQL_Plus将只提示您输入usr的值一次。

编辑:

是的,您可以从shell脚本中传入参数。示例:

代码语言:javascript
复制
$ 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

$ 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3278386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档