我只想问一下尝试在UNIX内/内IF..THEN..FI语句中创建一个简单的SQL select语句时的步骤。
我知道如何在SQL * Plus中使用'select'和'if..then'语句,但是我在使用UNIX脚本指向变量时遇到困难:如果'ABC'为'选择.. 。“
如果[“$?” ='ABC'] 然后 SELECT employeesid,name,age FROM tablename; 其他 退出1 网络
如果[“$?” ='XYZ'] 然后 SELECT employeesid,name,age FROM tablename; 其他 退出1 网络
如何更正确地将它放在UNIX脚本中,并且正确到位?
感谢。
答案 0 :(得分:4)
这听起来像是在尝试将SQLPlus嵌入到shell脚本中。从记忆中,咒语应该类似于:
if [ $? -eq ABC ]; then
SQLPLUS /S USER/PASS@Instance <<EOF
SET echo off;
SET pagesize 0;
SET heading off;
SPOOL foo.out
select foo from bar
EOF
fi
SQLPLUS和EOF之间的所有内容都传递给SQLPlus,因此我们有一些语句来控制格式(您可能需要不同的格式)和实际查询。 SQLPlus脚本中的SPOOL命令将输出发送到文件。有关使用SQLPlus的更详细文档,您可以从Oracle's web site.
下载它们答案 1 :(得分:1)
请记住,echo
是您的朋友。
if [ "$?" = "ABC" ] then echo SELECT employid, name, age FROM tablename; else exit 1; fi
您可以嵌入shell脚本变量等。小心需要引用shell想要操作的东西,比如引号和分号。
答案 2 :(得分:1)
您是否考虑过使用包含数据库连接功能的perl或其他脚本语言。这样就可以避免使用笨重的shell脚本/ SQL * Plus链接
答案 3 :(得分:0)
上面的答案还可以。但是,我知道,在shell脚本中使用SQLPlus,遗憾的是,我不需要SQLPlus脚本将输出发送到文件。换句话说:有没有其他方法可以做到这一点,只需将输出打印到日志?