一点背景知识:我有一个 perl 脚本,它在循环内执行许多操作。
在循环内部,我创建了一个准备好的语句,如下所示:
// inside loop
my $statement = "select xxxx from zzzzzz where $foobar;";
my $query = $connect->prepare($statement);
$query->execute();
每次循环完成时,$foobar 都会更新为一个新值,这就是为什么我想每次运行都更改查询,但是当我尝试这样做时出现错误。
运行脚本时出现此错误:
DBD::Pg::st execute failed: ERROR: prepared statement "xxxxxxxxxxxxx" already exists at
因为我传递了一个每次循环运行时都会更新的变量,并且假设我需要使用这个准备好的语句,我该如何解决这个错误?
感谢您的时间。
编辑:
对于将来遇到此问题的人,请在此处查看:
我试图得到
my $sth = $dbh->prepare('select interval ?');
http://gborg.postgresql.org/pipermail/dbdpg-general/2006-January/001972.html
http://gborg.postgresql.org/pipermail/dbdpg-general/2006-February/002007.html
列出一些解决方法:通过 pg_server_prepare 标志关闭服务器端准备或使用例如。'?::interval' 而不是 'interval ?'