2011-04-12 7 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을 지원하도록 변경되었습니다. 나는 데이터베이스 쿼리 및 work.Please 나던 연결 이외의 쿼리 THER 나에게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 세션에 대해 작동하지 않습니다를 안내 선택 oracle.But에 연결할 수 있었다. 여러 쿼리를 실행하는 방법에 대한 인터넷 검색.하지만 여전히 나에게 도움이되지 않습니다. 감사합니다. .

+0

미안 해요, 난 당신이 무슨 말을 하려는지의 머리 또는 꼬리를 만들 수 없습니다 :

당신은 단순히 이와 같은 참조 테이블로로 이러한 요구를 해결하기 위해 쿼리에서 데이터베이스 오브젝트를 앞에 있습니다 청하다. 아마도 당신은 어떤 오류 메시지가 나왔는지 우리에게 말할 수 있습니까? "효과가 없다"는 것은 도움이되지 않습니다. –

답변

2

두 번째 줄에 닫는 따옴표가 있습니까?

다른 방법으로는 명령 줄 프로그램을 사용하여 데이터베이스와 상호 작용하는 이유는 무엇입니까? DBI 나 DBIx :: Class와 같은 것을 사용해야합니다.

+0

번호. 언제나 DBI를 사용하는 것이 더 좋습니다. 감사합니다. – user682571

0

ALTER SESSION은 해당 세션 내에서 유효하지만 각 sql 명령에 대해 더 많은 세션을 열면 유효하지 않습니다.

SELECT * FROM USER.TABLE 
+0

나는 그것을 해냈습니다. 작동합니다. 감사합니다. – user682571