运行 sql 加Unix机器上的命令

Run sql plus commands on Unix machine

我在 unix 机器上工作,执行 oracle sql 命令的唯一方法是通过我们授予访问权限的 unix 脚本:

#! /user/bin/ksh

User = 'PATH' # I can't read the file in this path

sqlplus $user << word # I don't know what it is used for

然后我开始编写sql命令然后通过cmd

执行脚本

我的问题是: 我有什么方法可以通过cmd

直接通过上面的信息登录sqlplus吗

我试过用这个命令直接登录SQL*Plus:

sqlplus $user << word # I don't know what it is used for

但它提示用户名:# 我不知道

如果你的 unix box 设置正确,变量 PATH 应该包含 /usr/local/bin 你可以通过输入命令 echo $PATH.

来测试

如果它的设置,oracle 文件 oraenv 中的源代码是这样的

。 oraenv

请注意,在单词 oraenv 之间应该有一个 space。通过这样做,它应该将目录 $ORACLE_HOME:$ORACLE_HOME/bin 附加到 PATH 变量。由于 sqlplus 在 $ORACLE_HOME/bin 中,现在应该可以找到它。

我不建议偏离这个标准。您应该与您的 unix 管理员和 Oracle dba 联系以确保设置正确

User = 'PATH' # I can't read the file in this path There is no file to read. You are assigning the string literal 'PATH' to the environment variable "User". You could just as well say "User = 'FUBAR'"

sqlplus $user << word # I don't know what it is used for

它告诉 OS 启动可执行文件 'sqlplus',将环境变量“$user”的值传递给它,然后从脚本的下一行重定向其他输入,直到它来到字符串文字 'word'。这就是所谓的输入重定向,这一行与以单词 'word' 开头的行之间的命令有时被称为“一个 'here' 文档”。使用字符串文字 'word' 来终止它充其量是奇怪和误导的。大多数人为此目的使用 'EOF' 的一些变体。

我也不知道它的用途是什么。在 *nix 中,环境变量(与文件名一样)区分大小写。所以这个变量“user”与您在上一行中设置的变量“User”不同。

And then i start writing sql commands then execute the script through cmd

我不确定你的意思。你是说此时,你的脚本有 sql 命令要由 sqlplus 处理吗?如您使用的输入重定向所示?

But it prompted username : # which I don't know

好吧,尽管存在所有其他问题,如果您不知道用户名和密码,您将永远无法连接到数据库。