2011-05-17 60 views
0

我必须使用嵌套的if/then/else语句来检查从oracle数据库获取的查询。 我是unix新手。从搜索谷歌,我明白了将sql数据存储到变量的过程。但是当我必须使用嵌套的if语句时,我该怎么做?将sql数据存储在嵌套if变量中

我无法再次连接到数据库以将数据存储到变量中。有人可以帮忙吗?

我在这里写的是代码。原谅错误的语法。我来自编码为PHP

LOGFILE = #enter path here 

fetchdate = `sqlplus -s prmappo/[email protected] << 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行数据?

+0

我个人的感觉是从一个shell脚本,SQLPLUS不利于复杂的逻辑。 Perl作为主要Oracle版本的一部分进行安装,因此为在服务器上运行的东西提供了一个很好的选择。 – 2011-05-17 06:43:59

回答

0

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

除非您正在操作OS对象,否则在pl/sql中完全编码可能会更明智。在这种情况下,你完全可以控制,而且完全不会出现任何问题。如果您只操作Oracle对象,请尝试pl/sql。这是一种功能强大的编程语言。这样做也会阻止大量额外的数据库连接。如果您使用11g,则还可以使用远程作业代理来操作OS对象。

使用的SQLDeveloper代码和调试code.download从这里:Oracle SQL Developer