2011-04-12 90 views
0
Below is the module in sybase. 


    sub execute_query{ 
    $connect = "isql -S $SERVER-U $USER -P $PASS -D $DBNAME"; 
    $pid = open2(\*Rder, \*Wrter, "$connect"); 
    Writer->autoflush(); 
    print Write qq!   
    set transaction isolation level 0 
    go 
    Select * from remtrench 
    go 
    !; 
    Wrter->close(); 
    while(<Rder>) 
    { 
     Parse data 
     } 

上面的代碼對下面的支持oracle進行了更改。 我能夠連接到oracle.But選擇數據庫查詢以及其他查詢療法比連接犯規work.Please指導我oracle查詢執行中的問題

sub execute_query{ 
    $connect = "sqlplus $USER/[email protected] 
    $pid = open2(\*Rder, \*Wrter, "$connect"); 
    Writer->autoflush(); 
    alter session set current_schema = $DBNAME; 
    Select * from remtrench; 
    Writer->close(); 
    .... 
    } 

礦的上述變化不會對ALTER會議的其他查詢(選擇)工作。谷歌搜索如何執行多個查詢。但仍然這不幫助我。 謝謝。

+0

對不起,我不能讓的你想什麼頭或尾問。也許你可以告訴我們你收到了什麼錯誤信息? 「不起作用」沒有幫助。 – 2011-04-12 13:06:54

回答

2

是第二行缺失的引號嗎?

另外,爲什麼你要使用他們的命令行程序與數據庫進行交互?你應該使用類似DBI或DBIx :: Class的東西。

+0

不..通過使用DBI是一個更好的建議..謝謝 – user682571 2011-04-12 13:33:41

0

ALTER SESSION將在該會話中有效,但如果您爲每個sql命令打開更多會話,ALTER SESSION將無效。

你可能只是在查詢中來解決這個問題需要前綴的數據庫對象,例如通過這樣的引用表:

SELECT * FROM USER.TABLE 
+0

我已經做到了,它的工作原理。謝謝 – user682571 2011-05-18 13:28:08