2013-06-18 6 views
1

Я получаю следующую ошибку при попытке выполнить sql, который формируется путем объединения нескольких переменных.Perl DBD :: ODBC еще не поддерживает привязку именованного параметра более одного раза

DBD :: ODBC не поддерживает связывание именованный параметр больше, чем когда-то

Я могу выполнить один и тот же SQL из SQL запроса без каких-либо проблем !!

мой код выходит нравится это: (подключение DBI, даты и времени $ формат, все переменные, используемые уже созданы в предыдущих шагах)

$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"); 
+1

Какова ценность '$ sql'? – mob

+0

$ sql получает значение из функции crt_view (arg1, arg2, arg3, arg4), . Конечные значения в $ sql - это DDL-представление, которое работает без каких-либо проблем с редакторами sql. для ссылочных значений: ** СОЗДАТЬ ИЛИ ЗАМЕНИТЬ 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 ** – MikA

ответ

2

Похоже, он интерпретирует часть вашего SQL в качестве имени заполнителей, когда он не должен «т. Попробуйте сделать

$dbi->{odbc_ignore_named_placeholders} = 1; 

первый.

+0

Можете ли вы объяснить, что такое dbh? Я не использую его нигде в моем сценарии – MikA

+0

Это dbi в моем скрипте? – MikA

+0

извините, да, $ dbi – ysth

 Смежные вопросы

  • Нет связанных вопросов^_^