![]() |
Datenbank: ADS • Version: 9 • Zugriff über: Delphi 2009
Stored Procedure Abfrage ob Eintrag vorhanden
Hallo zusammen,
ich bin gerade dabei eine Stored Procedure zu schreiben, die mir anhand einer Bankleitzahl den Banknamen zurück gibt, oder anhand dem Banknamen die Bankleitzahl! Hier mein bisheriger Code: Dieser funktioniert schon so weit, dass ich eine Bankleitzahl eintragen kann und er mir den Banknamen zurückgibt, falls es einen gibt. Aber wie bau ich das ein, dass ich beim Ausführen der Stored Procedure entweder eine PLZ (integer) oder einen Banknamen (char) angeben kann, nachdem gesucht werden soll. Und ich möchte nur einen Parameter übergeben.
Code:
Aufruf der Stored Procedure:
PROCEDURE SP_ZMI_Bankdaten
( Bankleitzahl Integer, o Memo OUTPUT ) BEGIN DECLARE @Bankleitzahl INTEGER; DECLARE @Bankname char (60); @Bankleitzahl = (SELECT Bankleitzahl FROM __input); @Bankname = (SELECT Bankname FROM Bankdaten WHERE Bankleitzahl = @Bankleitzahl); IF @Bankname <> '' then INSERT INTO __output VALUES('Bankname lautet: ' +@Bankname); ELSE INSERT INTO __output VALUES('Keinen passenden Eintrag gefunden.'); END; END;
Code:
EXECUTE PROCEDURE SP_ZMI_Bankdaten(Bankleitzahl oder Bankname);
|
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Zitat:
SQL-Code:
Aufruf:
create function ZMI_Bankdaten(such cichar(100))
returns Memo begin declare @blz integer; declare @name string; try @blz=cast(such as sql_integer); catch all @name=trim(such); end try; if @blz is NULL then @blz=12345; //hier BLZ aus name ermitteln else @name='hallo test'; //hier name aus BLZ ermitteln endif; return trim(cast(@blz as sql_char))+' '+@name; end;
SQL-Code:
select
ZMI_Bankdaten('testbank eG'), ZMI_Bankdaten('60069911') from system.iota; |
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Also mit einer Bankleitzahl lässt sich eine Bank eindeutig identifizieren.
Mit einem Bankname ist dies nicht möglich. Man bräuchte mindestens noch die Postleitzahl als weiteres Kriterium. Daher würde ich empfehlen doch zwei getrennte SPs zu verwenden. Ausserdem sollte die SP nur die reinen Daten liefen; also ohne den Text "Bankname lautet: ". |
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Muß die BLZ ein Integer sein?
Soweit ich weiß, wird damit nicht gerechnet und da würde ein Char-Typ sich doch eher anbieten. Gruß K-H |
AW: Stored Procedure Abfrage ob Eintrag vorhanden
das Feld in der Tabelle ist ein Integer Feld, daher wird auch ein Integer erwartet, oder nicht?
|
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Code:
Soo, beim Eingeben einer Zahl natürlich in '' (
FUNCTION ZMI_Bankdaten
( such cichar(100) ) RETURNS Memo BEGIN declare @Bankleitzahl integer; declare @Bankname string; try @Bankleitzahl=cast(such as sql_integer); catch all @Bankname=trim(such); end try; if @Bankleitzahl is NULL then @Bankleitzahl= (SELECT Bankleitzahl FROM Bankdaten WHERE Bankname = such); else @Bankname= (SELECT Bankname FROM Bankdaten WHERE Bankleitzahl = such); endif; return trim(cast(@Bankleitzahl as sql_char))+' '+@Bankname; END;
Code:
bekomm ich folgende Fehlermeldung:
DECLARE @test Memo;
@test = ZMI_Bankdaten('10000000'); Invalid operand for operator: = ** Script error information: -- Location of error in the SQL statement is: 295 (line: 11 column: 16) Error in UDF: ZMI_Bankdaten Bei Eingabe einer Bank (
Code:
liefert er mir die entsprechende PLZ zurück. Dazu eine Frage, werden bei Functionen der Rückgabewerd nicht wie bei Prozeduren in der Messagebox angezeigt?
DECLARE @test Memo;
@test = ZMI_Bankdaten('Bundesbank'); |
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Könnte es sein, daß
Code:
ein NULL zurück liefert, was dann wieder in '' übersetzt werden müßte?
SELECT Bankname FROM Bankdaten WHERE Bankleitzahl = such
Gruß K-H |
AW: Stored Procedure Abfrage ob Eintrag vorhanden
hmn, mir is jetzte nicht klar, wieso ich das wieder umwandeln muss?
@bankname is vom typ string und bei meinem Select erhalte ich doch auch einen Text zurück ?!? |
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Zitat:
SQL-Code:
@Bankleitzahl= (SELECT Bankleitzahl FROM Bankdaten WHERE Bankname = @bankname);
|
AW: Stored Procedure Abfrage ob Eintrag vorhanden
Er knallt in der Zeile,
Code:
nicht in der @Bankleitzahl .....
@Bankname= (SELECT Bankname FROM Bankdaten WHERE Bankleitzahl = such);
wie gesagt mit der Fehlermeldung: Invalid operand for operator... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz