Two problems:
First, I tried:
my $measurementssth=$dbh->prepare("SELECT POLLENTRAP_ID, ALLER_ID, TYPE,
SPORES,FID, (SYSDATE-DATECOLLECTION)  FROM $measurements_table WHERE  
 (SYSDATE-DATECOLLECTION) <15 ORDER by  6  LIMIT 1 ") ;

(trying to get the one line of data for which DATECOLLECTION IS closest to 
SYSDATE PROVIDED these are no older than 14days, else I shoul get NULL)

and got:
DBD::Oracle::db prepare failed: ORA-00933: SQL command not properly ended (DBD 
ERROR: error possibly near <*> indicator at char 154 in 'SELECT 
POLLENTRAP_ID, ALLER_ID, TYPE,
SPORES,FID, (SYSDATE-DATECOLLECTION)  FROM mysc.MEASUREMENTS WHERE
 (SYSDATE-DATECOLLECTION) <15 ORDER by  6  <*>LIMIT 1 ') [for Statement 
"SELECT POLLENTRAP_ID, ALLER_ID, TYPE,
SPORES,FID, (SYSDATE-DATECOLLECTION)  FROM mysc.MEASUREMENTS WHERE
 (SYSDATE-DATECOLLECTION) <15 ORDER by  6  LIMIT 1 "] at alarmchk.pl line 176.

IT looks like it does not like LIMIT. Is this not legal in Oracle? Surely 
there must be a way to do this

**** SECOND PROBLEM ***
Another statement that fails is when I try to bind params

my $measurementssth2=$dbh->prepare("SELECT  TYPE,
SPORES FROM $measurements_table WHERE (POLLENTRAP_ID = ? AND ALLER_ID=? AND  
( TO_CHAR(SYSDATE,'IW')=
 TO_CHAR(DATECOLLECTION,'IW') )     )            "); 

and got:
DBD::Oracle::db prepare failed: ORA-00907: missing right parenthesis (DBD 
ERROR: error possibly near <*> indicator at char 70 in 'SELECT  TYPE,
SPORES FROM mysc.MEASUREMENTS WHERE  ( POLLENTRAP_ID<*>=:p1 AND FID=:p2 AND 
( TO_CHAR(SYSDATE,'IW')=
 TO_CHAR(DATECOLLECTION,'IW') )                 ') [for Statement "SELECT  
TYPE,SPORES FROM mysc.MEASUREMENTS WHERE  ( POLLENTRAP_ID=? AND FID=? AND 
( TO_CHAR(SYSDATE,'IW')=
 TO_CHAR(DATECOLLECTION,'IW') )                 "] at alarmchk.pl line 180.


Again, is there something I am missing about bind params in Oracle?


Reply via email to