AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

T-SQL - Schleife

Ein Thema von API · begonnen am 16. Feb 2016 · letzter Beitrag vom 18. Feb 2016
Antwort Antwort
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

T-SQL - Schleife

  Alt 16. Feb 2016, 15:25
Datenbank: MS SQL Server • Version: 2008 • Zugriff über: SSMS
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
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: T-SQL - Schleife

  Alt 16. Feb 2016, 15:47
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: T-SQL - Schleife

  Alt 16. Feb 2016, 15:53
If then else if then else if then else if then else if then else ...

Case?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#4

AW: T-SQL - Schleife

  Alt 16. Feb 2016, 15:57
hallo,

ein Array?

mfg
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: T-SQL - Schleife

  Alt 16. Feb 2016, 16:03
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
Philipp
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#6

AW: T-SQL - Schleife

  Alt 18. Feb 2016, 10:59
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.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: T-SQL - Schleife

  Alt 18. Feb 2016, 12:30
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: T-SQL - Schleife

  Alt 18. Feb 2016, 13:52
Sorry wegen den "Else"'s, ich hatte das einfach mal so runter geschrieben und nicht vorher getestet, sonst wäre es vermutlich aufgefallen naja, ist ja gut das ich dein Problem Beheben konnte
Philipp
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 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