Hallo,
$query = "select id, TO_char(started_at, 'dd.mm.yy hh24.mi.ss') ";
....
Das ist irgendwie nicht wirklich perlish. Perl kennt auch mehrzeilige String-Konstanten und sog. HERE-Documents.
z.B:
$query = <<EOT;
select id, TO_char(started_at, 'dd.mm.yy hh24.mi.ss')
from t_esdoc_eseries, t_esdoc_eseries_link
where subject_id = '$clone_name'
and id = eseries_id and name = 'LAB-PHASE'
order by started_at
EOT
Und ausserdem überschreibst Du hier...
$sth = $dbh ->prepare($query);
... und hier ...
$query = "select t_esdoc_watched.id, result, name, TO_char (created_at, 'dd.mm.yy hh24.mi.ss') ";
... ausserdem auch hier
$sth = $dbh->prepare($query);
... und hier auhc noch einmal globale Variablen.
Hätte jemand eine Idee, warum das so ist?
Du überschreibst Dir in der aufgerufenen Funktion den Statement-Handle der aufrufenden Funktion. Das mag keine Programiersprache, auch Perl nicht. Mit "use strict;" wäre das nicht passiert.
Abhilfe: Setze "use strict;" ein und behebe die dadurch zu Tage tretenden Fehler.
Grüße
Klaus