繁体   English   中英

在Perl脚本中更新SQL-执行语句卡住

[英]Update sql in perl script - execute statement stuck

执行语句有问题。 当我在命令提示符下运行时,它似乎永远挂起。 它也不会死。 是否执行可能需要参数?

#!/usr/bin/perl
use DBI;
use Data::Dumper;

$dbh = DBI->connect('DB', 'NAME', 'PASS',{ LongReadLen => 1000000} ) or die 'Error: cant connect to db';

$st= "update table set the_id = 7 where mid = 23 and tid = 22";

my $UpdateRecord = $dbh->prepare($st)  or die "Couldn't prepare statement: $st".$dbh->errstr;
$UpdateRecord->execute() or die "can not execute $UpdateRecord".$dbh->errstr;
$UpdateRecord->finish;


$dbh->disconnect();

编辑:
我尝试在执行中以及使用bind_param()进行绑定,但仍处于挂起状态。

您需要do而不是prepare

my $UpdatedRecord = $dbh->do($st)  or die "Statement fails: $st".$dbh->errstr;

从DBI

对于非SELECT语句(由于驱动程序的限制而无法预先准备)或不需要重复执行的非SELECT语句,此方法通常最为有用。 不应将其用于SELECT语句,因为它不会返回语句句柄(因此您无法获取任何数据)。

另外,最好在use DBI;之后在顶部添加/使用db driver模块use DBI; 声明。

use DBD::Oracle ;

还添加

使用严格
使用警告;

问题是我锁了一堆对象,以免在我运行一次断开连接之前无法将其插入。是的,不要那样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM