不确定这是Perl还是Oracle问题。我对这两个都很陌生。从缓存中停止Oracle选择查询 - 从Perl运行查询
我表中有1行。它的值是一个数字。此号码经常更新。
当我运行从Perl的select查询得到这个值......它并不总是最新的值。它通常是一个旧的价值。我将通过SQLPLUS运行相同的查询,然后我会看到正确的值...如果我删除表中的数据并再次插入,Perl将只显示正确的值。
所以,我想知道 - 这是查询以某种方式被缓存?
这就是我如何运行在Perl查询:
my $sql_latest_jobID = "SELECT /*+ NOCACHE */ job_number FROM example_table WHERE ID = 1";
my $sth = $dbh->prepare($sql_latest_jobID)
or die "Couldn't prepare statement: " . $dbh->errstr;
$sth->execute();
my @data = $sth->fetchrow_array();
$jobID = $data[0];
我也试着查询没有NOCACHE。有相同的结果。
这是不可能的。你确定你更新过吗? Oracle不允许脏读,所以如果您没有在SQL * Plus中提交更改,您将无法在Perl中看到它们 - 请注意,每个会话都是独立的。 – NullUserException