[英]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.