2011-04-12 59 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