Hallo,hier erstmal wieder der Code:
#!/usr/bin/perluse DBI;
open(DATEI,">../temp/ausgabe.txt");
open(DATEI2,"../temp/abf-standort.txt");
$url="ausgabe.pl";
$STANDORT = "<DATEI2>";
#$STANDORT = "'%Ulm%'";
%properties = ( 'user' => 'xxxx',
'password' => 'xxxx',
'host.name' => 'xxx.xxx.xxx.xxx',
'host.port' => 'xxx' );
$dsn = "dbi:JDBC:hostname=localhost:9001;url=xxx";
$dbh = DBI->connect($dsn, undef, undef,
{PrintError => 0,RaiseError => 1, jdbc_properties => \%properties})
or die "Failed to connect: ($DBI::err) $DBI::errstr\n";
$sth = $dbh->prepare("SELECT DISTINCT T1.DOMAIN_INDEX,T2.SERVICE,STRIP(T2.PREFIX,T),STRIP(T1.BENUTZERKENNUNG,T),STRIP(T2.SUFFIX,T),T5.STANDORT FROM tradius.RSTB7020 T1, tradius.RSTB2014 T2, tradius.RSTB2019 T3, tradius.RSTB4111 T4, tradius.RSTB3010 T5 WHERE T1.DOMAIN_INDEX IN ( SELECT DISTINCT DOMAIN_INDEX FROM tradius.RSTB2011 WHERE VIP_NUMMER IN ( 90,91,98,100,154,405,406,407,408,409,410,412,413,801,802,803,804,806,807 ) AND T1.DOMAIN_INDEX=T2.DOMAIN_INDEX) AND (T2.DOMAIN_INDEX=T3.DOMAIN_INDEX) AND (T3.IP_POOL_UNIT=T4.IP_POOL_UNIT) AND (T4.IP_CLUSTER_ID=SYSTEM_ID) AND ( T2.SERVICE ='UserAuthIP' OR T2.SERVICE ='TunClientAuthL' OR T2.SERVICE ='TunClientAuthR') AND ( T2.CALLED_STATION_ID = 'lns' OR T2.CALLED_STATION_ID = '-' ) AND (T5.STANDORT LIKE $STANDORT) ORDER BY 1,2 WITH UR");
$sth->execute();
while ((@row) = $sth->fetchrow_array)
{
print DATEI join ("\t", map {defined $_ ? $_ : "(null)"} @row),"\n";
}
$dbh->disconnect();
close(DATEI2);
close(DATEI);
print "location: $url\n\n";
Kommen wir nun also zu meinem Problem. In einem Webinterface kann der User Daten eingeben, welcehe dann in TXT-Dateien abgespeichert werden. Diese Angaben werden dann wieder ausgelesen und in die SELECT-Abfrage eingebaut.Generell funktioniert das mit dem Auslesen ja wie folgt:
#! /usr/bin/perl
open(DATEI,"datei.txt");$S1=<DATEI>;
print "$S1";
close(DATEI);
Ich habe dieses funktionierende Code-Schnipsel also in mein aktuelles Abfrage-Skript eingebaut. Doch dann tritt folgende Fehlermeldung im errorlog auf dem Server auf:
DBD::JDBC::st execute failed: DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: <;( ? : CASE CAST USER <FLOAT> CURRENT <DECIMAL> <INTEGER>
Diese Fehlermeldung bedeutet laut Handbuch, dass man illegale Symbole in seiner Abfrage hat. Gebe ich die SQL-Abfrage jedoch ohne Auslesen aus der externen Datei direkt an, dann funktioniert es.Hab schon etwas rumgesucht. Das hängt irgendwie mit dem Befehl CAT zusammen. Ich verstehe das Ganze aber noch nicht richtig. Wäre schön wenn jemand mir etwas auf die Sprünge helfen könnte.
Datum: 30.06.2006-10:42
