我正在写一个perl脚本中的问题。当我运行脚本时,它会在prepare()之后挂起。我试图从SQL Developer运行更新语句,它工作正常。
我也试图打印出所有参数,但它们是正确的。
我在这里缺少什么?
my $upd = 'update ngs.pp_subscr_data set address=?, city=?, postalcode=?, kennitala=?, email=?, firstname=?, lastname=?, last_upd=systimestamp where snb=?';
my $s = $dbh->prepare ($upd) || exitError(-9802, 'Couldn\'t prepare update statement.');
$s->execute($addr, $city, $pcode, $ktala, $email, $fname, $lname, $snb) || exitError(-9803, 'Couldn\'t execute statement: ' . $s->errstr);
感谢。
答案 0 :(得分:0)
首先,什么版本的Oracle?
好的,我看到你的描述有几个问题。当你说“挂”时,它真的是挂起吗?它会旋转吗?
另外,第二,你说“......它在准备()后挂起”。这是否意味着它在调用prepare()之后或从prepare()返回后挂起?
它是否挂在数据库中,而您的客户端程序正在等待数据库调用完成?
您需要运行该程序,然后查看V $ SESSION,识别与程序的数据库会话相对应的SID,并查看它正在执行的操作。查看V $ SESSION中的EVENT列。另外,查看STATUS列以判断会话当前是在数据库调用(ACTIVE)中,还是等待客户端程序调用数据库(INACTIVE)。
回复一些信息,我可能会提供进一步的见解。
希望有所帮助。