# MS-SQL StringVergleich mit Cursor



## peliphan (11. Oktober 2004)

Hallo Forum,

ich hab hier ein etwas längeres Query unter MS_SQL und würde gerne innerhalb diese Querys eine If-Abfrage machen,
abgefragt werden soll ob mein mittels Cursor gelieferter Wert (varchar) gleich dem Temporären, aus einer Datei eingelesenem Wert (String) ist.
Implementieren tue ich das ganze unter Delphi, 
aber das tut ja eigentlich nichts zur Sache, glaube ich,  
primär geht es ja um den SQL-String

Leider komme ich mit dem Versuch 

```
declare @ueb varchar(75)
 
if @ueb <> "tmpueb"
..
```
 
nicht wirklich weiter, 
vielleicht ist es ja ganz einfach nur ich finde irgendwie keine Lösung.
Der ganze Vergleich sollte innerhalb der Querys geschehen, ohne Rückgabe. 

Vielleicht kann mir Grünschnabel ja jemand helfen, 

wäre super, 

THX 
Peli


----------



## MKDCom (29. Oktober 2004)

Hi Grünschnabel  ,


ich kann Dir zwar nicht weiterhelfen, bin aber auf der Suche nach einer ähnlichen Lösung. Leider musste ich feststellen, dass in diesem und 2 weiteren Foren mehrere solcher Fragen zum Cursor oder zu Stringvergleichen gestellt und unbeantwortet blieben. 

Wenn Du bereits eine Lösung hast (oder eine weiterführende Idee), wäre es nett, wenn Du mal was posten könntest...

Gruß,

Matthias


----------



## mschuetzda (29. Oktober 2004)

Ich weiß zwar nicht ob es Euch weiterhilft, weil ich mich in MS_SQL nicht gut auskenne.
Mit Oracle wären meine Fragen jetzt dazu:
Wird der Cursor korrekt geöffnet und läuft er sauber durch den select?
Werden die Cursordaten korrekt bzw. wie gewünscht zurückgeliefert?
Erfolgt der Vergleich wirklich mit der temp- bzw. String-Variablen oder wie in der Frage von peliphan mit einer "Konstanten" ?

Wird der Then-Block korrekt abgearbeitet wenn ihr dort einen einfachen Test wie C=A+B 
oder einen Recordzähler einbaut ?


----------



## MKDCom (29. Oktober 2004)

@mschuetzda,



> Wird der Cursor korrekt geöffnet und läuft er sauber durch den select?


Also bei mir schon



> Werden die Cursordaten korrekt bzw. wie gewünscht zurückgeliefert?


Also die Daten sehen zumindest ziemlich korrekt aus 



> Erfolgt der Vergleich wirklich mit der temp- bzw. String-Variablen oder wie in der Frage von peliphan mit einer "Konstanten" ?


Tja, ich bin irgendwie noch ein Neewby und muss hier passen. Soweit bin ich eben noch nicht. Und in meiner Literatur sind die Erklärungen zum Thema Cursor soweit fortgeschritten, das man denkt, der Leser könnte das Buch auch selbst schreiben um diese Themen zu verstehen.
Also ich meine, wie gehe ich da mit den Variablen an welchen Stellen um?




> Wird der Then-Block korrekt abgearbeitet wenn ihr dort einen einfachen Test wie C=A+B
> oder einen Recordzähler einbaut ?


Dazu kommen wir dann.....

Wenn das weiterhilft,
Ich habe folgenden funktionierenden Code-ausschnitt:

```
DECLARE Mattos_Cursor CURSOR FOR
SELECT Termin_Z, CAST(Termin_Z as datetime)
As datum_Z, Termin_1, CAST(Termin_1 as datetime)
As datum_1 FROM test.dbo.Ergebnisse 
WHERE ISDATE(Termin_Z) = 1 AND ISDATE(Termin_1) =1
OPEN Mattos_Cursor
FETCH NEXT FROM Mattos_Cursor
WHILE @@FETCH_STATUS =0
	 BEGIN
		 FETCH NEXT FROM Mattos_Cursor
	 END
CLOSE Mattos_Cursor
DEALLOCATE Mattos_Cursor
```
 
Ich weiß, dass ich damit bis hierhin noch nichts mit den Daten angestellt habe  
Unabhängig davon, was ich tun will, bin ich jetzt einfach zu lange auf der Suche nach einer guten Cursor- Erklärung, als dass ich mich auf mein eigentliches Problem des Stringvergleiches (was ich latürnich nicht aus den Augen lassen werde)konzentrieren will.

Ab hier ist es halt so, dass ich nicht wirlich weiß, wie ich mit den durch den Cursor gelieferten Daten umgehen kann/soll. Bei einem "INTO" innerhalb des Cursors bekomme ich eine Fehlermeldung, also müssen Variablen verwendet werden. Ich weiß nur noch nicht wie!

Bin für jeden hilfreichen Tip sehr dankbar.


----------

