【问题标题】:Perl DBD::ODBC does not yet support binding a named parameter more than oncePerl DBD :: ODBC尚未支持绑定命名参数多次
【发布时间】:2013-06-15 04:13:12
【问题描述】:

我在尝试执行通过连接几个变量形成的 sql 时遇到以下错误。

DBD::ODBC 尚不支持多次绑定命名参数

我可以从 sql 提示符执行相同的 sql 没有任何问题!!

我的代码是这样的:(DBI 连接,日期时间 $format,所有使用的变量都已在前面的步骤中创建)

$sql = "";
my $param1 = $format->parse_datetime($dateval->ymd('-'));
$param1->add(days => 1);
$sql = crt_view($param1,$param2,$param3,$param4); #crt_view is function which will return a segment of my sql for the parameters passed
$sqlins = "create or replace view v_tabl_xxx as ".$sql;
$sth = $dbi->prepare($sqlins);
$sth->execute() or die("[ERROR] : \n\t$DBI::errstr\n");

【问题讨论】:

  • $sql的值是多少?
  • $sql 从函数 crt_view(arg1,arg2,arg3,arg4) 中获取值,$sql 中的最终值是视图的 DDL,该视图在 sql 编辑器中没有任何问题。供您参考,值如下: CREATE OR REPLACE VIEW v_tabl_xxx AS SELECT id, mid, NVL(val,'-1') AS val, "TIME", EXP(-1.0*(MINUTES_BETWEEN("TIME" ,'2013-05-26'))/1440)::REAL AS delay FROM tabl_xxx_201303 WHERE "TIME" >= '2013-03-05' UNION ALL SELECT id, mid, NVL(val,'-1') AS val, "TIME", EXP(-1.0*(MINUTES_BETWEEN("TIME",'2013-05-26'))/1440)::REAL AS delay FROM tabl_xxx_201304

标签: sql perl odbc dbi dbd


【解决方案1】:

听起来它在不应该将 SQL 的一部分解释为命名占位符。 尝试做

$dbi->{odbc_ignore_named_placeholders} = 1;

首先。

【讨论】:

  • 你能解释一下什么是dbh吗?我没有在脚本中的任何地方使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多