2

我只是想在尝试在 UNIX 内部/内部 IF..THEN..FI 语句中创建一个简单的 SQL 选择语句时询问这些步骤。

我知道如何在 SQL*Plus 中使用 'select' 和 'if..then' 语句,但是我在使用 UNIX 脚本指向变量时遇到了困难: If 'ABC' to 'Select...'

例子:

如果[“$?” = 'ABC' ] 然后 SELECTemployid, name, age FROM tablename; 否则退出 1 fi

如果[“$?” = 'XYZ' ] 然后 SELECTemployid, name, age FROM tablename; 否则退出 1 fi

如何更正确地将其放入 UNIX 脚本中?

谢谢。

4

4 回答 4

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 的网站下载它们。

于 2008-11-11T21:49:42.653 回答
1

记住那echo是你的朋友。

if [ "$?" = "ABC" ] then echo SELECT employid, name, age FROM tablename; else exit 1; fi

您可以嵌入 shell 脚本变量等。注意需要引用 shell 想要操作的东西,比如引号和分号。

于 2008-11-12T01:25:36.227 回答
1

您是否考虑过使用 perl 或其他包含数据库连接功能的脚本语言。这样您就可以避免笨拙的 shell 脚本/SQL*Plus 链接

于 2008-12-30T20:31:54.850 回答
0

上面的答案是可以的。但是,我知道,在 shell 脚本中使用 SQLPlus,不幸的是,我不需要 SQLPlus 脚本来将输出发送到文件。换句话说:有没有其他方法可以做到这一点,只需将输出打印到日志中?

于 2008-11-12T01:20:38.887 回答