簡體   English   中英

Perl腳本中的Oracle DBD錯誤

[英]Oracle DBD Error from Perl script

我正在嘗試運行Perl腳本,但出現了oracle錯誤。

DBD::Oracle::db prepare failed: ORA-01756: quoted string not properly terminated (DBD ERROR: OCIStmtPrepare) 

但是此SQL QUERY在TOAD中完全可以正常工作

我的perl連接詳細信息:

my $dbh = DBI->connect($dsn, $dbuser, $dbpass, { RaiseError => 1, AutoCommit => 0 });
    my $sth=$dbh->prepare($SQL);
    $sth->execute or die "EXEC ERROR $sth->errstr";

sql查詢:

SELECT name FROM employee WHERE
            event IN ('IPO', 'RIGHTS')
        AND (NOT market_code = 'ID' OR NOT event = 'RIGHTS')
        AND NOT market_code = 'IN'
        AND NOT market_code = 'NZ'
        AND name NOT LIKE '%stat%'
          AND NOT REGEXP_LIKE (name, 'S.K(Q|S)$')
          AND name NOT LIKE '.%'
          AND name NOT LIKE '%ol.SI'
          AND name NOT LIKE '%bi.SI' 

Perl將插入雙引號字符串文字,例如

 my $SQL = "REGEXP_LIKE (name, 'S.K(Q|S)$')";

在這里,您的“變量” $'將替換為其值。

如果您不想這樣做,請使用非插值版本:

 my $SQL = q{REGEXP_LIKE (name, 'S.K(Q|S)$')};

單引號字符串也可以,但是由於您內部有單引號,因此q{}很方便。 您可以選擇所需的任何終止符(例如q[] ),也可以使用qq{}對其進行插值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM