Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   T-SQL - Schleife (https://www.delphipraxis.net/188282-t-sql-schleife.html)

API 16. Feb 2016 14:25

Datenbank: MS SQL Server • Version: 2008 • Zugriff über: SSMS

T-SQL - Schleife
 
Hallo, kann man diesen Code irgendwie kompakter schreiben?

@C1_ID, etc. sind Parameter vom Typ VARCHAR(50) einer sp.


Code:
DECLARE @Counter INT
SET @Counter = 1

WHILE (@Counter < 5)
BEGIN
   IF (@Counter = 1)
   BEGIN
      SET @C_ID = @C1_ID
   END
   ELSE IF (@Counter = 2)
   BEGIN
      SET @C_ID = @C2_ID
   END
   ELSE IF (@Counter = 3)
   BEGIN
      SET @C_ID = @C3_ID
   END
   ELSE IF (@Counter = 4)
   BEGIN
      SET @C_ID = @C4_ID
   END
   SET @Counter = @Counter + 1

   -- some more code.....
END

jobo 16. Feb 2016 14:47

AW: T-SQL - Schleife
 
Geht es darum, ein Verarbeitungs-Feld auszutauschen abhängig vom Counter?
Ich denke nicht, dass es besser geht, außer ein Case Statement, was aber im Prinzip kein Unterschied ist.

Eigentlich deutet diese Feld1- 5 Geschichte auf ein unsauberes Datenmodell hin, würde ich mal so ohne weiteren Hintergrund sagen.
Die Feld1- Feld5 Infos gehören vielleicht eher in 5 verschiedene Datensätze und würden so problemlos zu bearbeiten sein.

himitsu 16. Feb 2016 14:53

AW: T-SQL - Schleife
 
If then else if then else if then else if then else if then else ...

Case?

frankyboy1974 16. Feb 2016 14:57

AW: T-SQL - Schleife
 
hallo,

ein Array?

mfg

Devil1925 16. Feb 2016 15:03

AW: T-SQL - Schleife
 
Also ich hätte das jetzt so gemacht:
Code:
DECLARE @Counter INT
SET @Counter = 1

WHILE (@Counter < 5)
BEGIN
  Set @C_ID =
   Case @Counter
   When 1 then @C1_ID else
   When 2 then @C2_ID else
   When 3 then @C3_ID else
   When 4 then @C4_ID end;
END
   SET @Counter = @Counter + 1
MFG Devil

API 18. Feb 2016 09:59

AW: T-SQL - Schleife
 
Danke Devil1925, genau so habe ich es mir vorgestellt.

PS: Die else musste ich weglassen, sonst zeigte es Fehler an.


Zitat:

Eigentlich deutet diese Feld1- 5 Geschichte auf ein unsauberes Datenmodell hin, würde ich mal so ohne weiteren Hintergrund sagen.
Das sind 4 Parameter einer gespeicherten Prozedur.

jobo 18. Feb 2016 11:30

AW: T-SQL - Schleife
 
Zitat:

Zitat von API (Beitrag 1330721)
Zitat:

Eigentlich deutet diese Feld1- 5 Geschichte auf ein unsauberes Datenmodell hin, würde ich mal so ohne weiteren Hintergrund sagen.
Das sind 4 Parameter einer gespeicherten Prozedur.

Ja, schon klar. Merkmale, die in dieser Form durchnummeriert sind, deuten halt auf schwächen im Datenmodell. Ich habe ja dazugeschrieben, dass ich das ohne Hintergrundinformationen schreibe. Es war einfach nur ein Hinweis.

Devil1925 18. Feb 2016 12:52

AW: T-SQL - Schleife
 
Sorry wegen den "Else"'s, ich hatte das einfach mal so runter geschrieben und nicht vorher getestet, sonst wäre es vermutlich aufgefallen :D naja, ist ja gut das ich dein Problem Beheben konnte :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz