将sql数据存储在嵌套if中的变量中

将sql数据存储在嵌套if中的变量中,sql,oracle,unix,Sql,Oracle,Unix,我必须使用嵌套的if/then/else语句来检查从oracle db获得的查询。 我是unix新手。通过在google上搜索,我了解了将sql数据存储到变量中的过程。但是当我必须使用嵌套的if语句时,我该如何做呢 我无法一次又一次地连接数据库以将数据存储到变量中。有人能帮忙吗 我在这里写的是代码。请原谅语法错误。我来自php编程 LOGFILE = #enter path here fetchdate = `sqlplus -s prmappo/prmappo@PRMDB <&

我必须使用嵌套的if/then/else语句来检查从oracle db获得的查询。 我是unix新手。通过在google上搜索,我了解了将sql数据存储到变量中的过程。但是当我必须使用嵌套的if语句时,我该如何做呢

我无法一次又一次地连接数据库以将数据存储到变量中。有人能帮忙吗

我在这里写的是代码。请原谅语法错误。我来自php编程

    LOGFILE = #enter path here

fetchdate = `sqlplus -s prmappo/prmappo@PRMDB << EOFSQL
select min(call_start_datetime) from error_repository;
exit;
EOFSQL`
if (( "${fetchdate:4:2}" == "02" ));
    then
    $query_1 = select * from error_repository_BKP partition(part_maxval);
    if (($query_1 == NULL));
    then
        $query_2 = "alter table error_repository_BKP
                        exchange partition part_maxval
                        with table error_repository
                        without validation;" >> $LOGFILE
    commit; 
    fi

  $query_3 = "select * from error_repository;"

另外,请告诉我如何读取存储在变量中的SQL行数据?

如果要使用sqlplus编写脚本,最简单的方法是将数据以某种单独的格式假脱机到文件中,并解释该文件的输出。您可以从spool文件的字段中分配变量

除非您正在操作操作系统对象,否则完全用pl/sql编写代码可能更明智。在这种情况下,你有完全的控制权,在分配任务上没有任何问题。如果您只操作Oracle对象,请尝试pl/sql。这是一种功能强大的编程语言。这样做还可以防止大量额外的数据库连接。如果使用11g,还可以通过使用远程作业代理操作操作系统对象


使用sqldeveloper编写和调试代码。从这里下载:

我个人的感觉是,shell脚本中的SQLPLUS不适合复杂的逻辑。Perl是作为Oracle主要版本的一部分安装的,因此对于服务器上运行的东西来说是一个很好的选择。