perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 22
Click for quality!




11.02.2012 / 22:34

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragSQL error: SQLCODE: -104
Seitenanfang
Hallo,

hier erstmal wieder der Code:

#!/usr/bin/perl

use 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

Beitragre: SQL error: SQLCODE: -104
Seitenanfang
Hallo

Also ich habe ja die Vermutung, dass Perl mit den Joker-Zeichen % ein Problem hat.Ich denke das er das Prozentzeichen als Hash-Wert interpretiert. Nur ich verstehe nicht warum er es dann richtig macht, wenn ich es innerhalb des Perl-Files habe und nicht aus einer externen Datei einlese.Kann mir da vielleicht jemand helfen?

Tschau

Datum: 03.07.2006-11:37

Beitragre: SQL error: SQLCODE: -104
Seitenanfang
Hallo,

mit $STANDORT = "<DATEI2>"; gleich zu Anfang bekommst du vielleicht nicht den Inhalt der ersten Zeile der Datei, sondern immer den gleichen String mit < und >, die der SQL-Interpreter in diesem Zusammenhang nicht versteht. -> $STANDORT = <DATEI2>;
Nicht vergessen, dass da eventuell noch der Zeilenumbruch dranhängt.

Für die manuelle Eingabe muss $STANDORT = '%Ulm%'; geschrieben werden, ohne doppelte Anführungszeichen.

Grüße,
Peter

Datum: 03.07.2006-20:59

Beitragre: SQL error: SQLCODE: -104
Seitenanfang
Hallo,

hatte den Fehler mittlerweile schon selber lösen können. Aber dein Ansatz war nicht schlecht. Der Fehler waren die doppelten Anführungszeichen. Das Ganze musste so aussehen $STANDORT = <DATEI2>. Keine Ahnung warum ich dass so gemacht habe. Thread kann geschlossen werden.

Tschau

Datum: 04.07.2006-14:07

-






-
-