2011-05-17 64 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