Ich übergebe an eine Stored Procedure verschiedene Werte, u.a. auch zwei Strings( =Varchar2), welche auch mal leer sein können.
DOA übersetzt diesen Parameter (bei DeclareAndSet) dann auch gleich zu NULL. Die
Query sieht so aus:
SQL-Code:
begin
addTraffic(:Zeit,:SrcIP,:DestIP,:Traffic);
end;
SrcIP und/oder DestIP können leer sein, wenn es eben keine
IP gibt. In der SP wird nach verschiedenen Überprüfungen etwas in die Tabellen eingetragen. Eine Überprüfung sieht folgendermaßen aus:
SQL-Code:
Select count(id_zeit) into n from dbt_traffic
where id_Zeit=id
and SrcIP=aSrcIP --SrcIP ist ein Spaltenname, aSrcIP ist der übergebene Parameter
and DestIP=aDestIP;
-- hier wird abhängig von n ein Event (dbms_alert) ausgelöst
Und dummerweise ergibt der Ausdruck "Null=Null" --> FALSE. Das bedeutet, obwohl es bspw eine Zeile SrcIP gibt, die NULL ist und aSrcIP auch Null, wird diese Zeile nicht gefunden (die anderen Bedingungen gibt es).
Wie kann ich das umgehen? Die Stored Procedure ist auch die einzige, die die entsprechenden Tabellen füllt, weswegen ja auch erst das NULL in die Tabellen kommt, was mich, bis auf obiges Problem auch nicht stört.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.