【问题标题】:SQL select statement in UNIX inside/within IF..THEN statementUNIX inside/within IF..THEN 语句中的 SQL 选择语句
【发布时间】:2010-09-21 21:15:40
【问题描述】:

我只想问一下尝试在 UNIX inside/within IF..THEN..FI 语句中创建简单 SQL 选择语句时的步骤。

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

示例:

如果 [ "$?" ='ABC'] 然后 从表名中选择雇员、姓名、年龄; 别的 1号出口 菲

如果 [ "$?" ='XYZ'] 然后 从表名中选择雇员、姓名、年龄; 别的 1号出口 菲

我如何将它放在 UNIX 脚本中,语法更正确,更切中要害?

谢谢。

【问题讨论】:

    标签: oracle unix shell sqlplus


    【解决方案1】:

    这听起来像是您在尝试将 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. 下载它们

    【讨论】:

      【解决方案2】:

      记住echo是你的朋友。

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2017-07-07
            • 1970-01-01
            • 1970-01-01
            • 2022-01-22
            • 1970-01-01
            • 1970-01-01
            • 2021-03-20
            • 1970-01-01
            • 2015-08-20
            相关资源
            最近更新 更多