我编写了一个 Perl 脚本来检查 Oracle 数据库中的数据。因为查询过程很复杂我选择在中间创建一个VIEW。使用这个视图可以大大简化代码。
当我使用 Perl 代码从文件开始查询数据库时,Perl 代码运行良好,例如Perl mycode.pl file_a
. Perl 代码从视图中读取行file_a
并创建/更新视图,直到输入结束。我取得的结果是完全正确的。
当我同时运行时出现问题
perl mycode.pl file_a
和
perl mycode.pl file_b
访问同一个数据库。根据我的观察,第一个进程使用的VIEW会被第二个进程修改。这两个过程在同一个观点上交织在一起。
有什么建议可以使这两个过程不相互冲突吗?
查询数据库的 Perl 代码通常是这样的,但是每个实际查询中的细节都比较复杂。
my ($gcsta,$gcsto,$cms) = @t; #(details of @t is read from a line in file a or b)
my $VIEWSS = 'CREATE OR REPLACE VIEW VIEWSS AS SELECT ID,GSTA,GSTO,GWTA FROM TABLEA WHERE GSTA='.$gcsta.' AND GSTO='.$gcsto.' AND CMS='.$cms;
my $querying = q{ SELECT COUNT(*) FROM VIEWSS WHERE VIEWSS.ID=1};
my $inner_sth = $dbh->prepare($VIEWSS);
my $inner_rv = $inner_sth->execute();
$inner_sth = $dbh->prepare($querying);
$inner_rv = $inner_sth->execute();