【问题标题】:Need help in running select statement in a perl script在 perl 脚本中运行 select 语句时需要帮助
【发布时间】:2019-03-21 20:20:17
【问题描述】:
$START_PRI_AA=1;

$expression = "$SQLPLUS_DIR\\$SQLPLUS_EXEC -S $PLANSTAGE_DB_USER/$PLANSTAGE_DB_PASSWORD\@$PLANSTAGE_DB_ALIAS  
        'set pagesize 0
        set feedback off
        set verify off
        set heading off
        set echo off 
        select STATUS from jdaabppd.DFXHA_ENGINE_STATUS where ENGINE_NAME ='$ENV{PRI_AA_ENGINE}';
        exit;
        /'
        ";

print "\n\n expression is $expression \n\n";
$status = system($expression);

print "$status\n\n";

【问题讨论】:

  • 您的问题是什么?请发布脚本的输出,包括错误消息。并尝试在 SQL 语句之间添加分号。

标签: sql database windows perl


【解决方案1】:

为什么要在 Perl 中使用 SQLPLUS,而它已经拥有与数据库交互的优秀模块?

首先您需要安装模块DBIDBD::Oracle,然后您可以执行以下操作:

use strict;
use warnings;
use DBI;

my $dbh = DBI->connect(
    "dbi:Oracle:host=locahost;port=1521;sid=$PLANSTAGE_DB_ALIAS",  # DSN of the database to connect 
    $PLANSTAGE_DB_USER,      # username
    $PLANSTAGE_DB_PASSWORD,  # password
    { RaiseError => 1 }      # die on any DBI error
);

my ($status) = $dbh->selectrow_array(
    "select STATUS from jdaabppd.DFXHA_ENGINE_STATUS where ENGINE_NAME ='?", # your sql query
    undef,                 # no specific options needed 
    $ENV{PRI_AA_ENGINE}    # bind value
);

您可能需要根据您的用例调整 DSN,我根据您展示的代码 sn-p 做了一些假设。阅读 DBI 文档了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多