无法在perl中执行oracle update语句

时间:2012-03-20 17:27:12

标签: perl oracle execute

我正在写一个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);

感谢。

1 个答案:

答案 0 :(得分:0)

首先,什么版本的Oracle?

好的,我看到你的描述有几个问题。当你说“挂”时,它真的是挂起吗?它会旋转吗?

另外,第二,你说“......它在准备()后挂起”。这是否意味着它在调用prepare()之后或从prepare()返回后挂起?

它是否挂在数据库中,而您的客户端程序正在等待数据库调用完成?

您需要运行该程序,然后查看V $ SESSION,识别与程序的数据库会话相对应的SID,并查看它正在执行的操作。查看V $ SESSION中的EVENT列。另外,查看STATUS列以判断会话当前是在数据库调用(ACTIVE)中,还是等待客户端程序调用数据库(INACTIVE)。

回复一些信息,我可能会提供进一步的见解。

希望有所帮助。