【发布时间】: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