oracle查询执行中的问题

时间:2011-04-12 12:55:00

标签: perl oracle

    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选择数据库查询和其他查询比连接不起作用。请指导我

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

我的上述更改不适用于alter session其他查询(选择)。搜索如何执行多个查询。但这对我没有帮助。 感谢。

2 个答案:

答案 0 :(得分:2)

第二行是否缺少右引号?

或者,为什么要使用他们的命令行程序与数据库交互?您应该使用类似DBI或DBIx :: Class。

答案 1 :(得分:0)

ALTER SESSION在该会话中有效,但如果为每个sql命令打开更多会话则不会。

您可以简单地在查询中为数据库对象添加前缀以绕过此要求,例如通过引用这样的表:

SELECT * FROM USER.TABLE