AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MSSQL Server: Datensätze durchgehen???
Thema durchsuchen
Ansicht
Themen-Optionen

MSSQL Server: Datensätze durchgehen???

Ein Thema von romber · begonnen am 24. Aug 2005 · letzter Beitrag vom 24. Aug 2005
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#1

MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 00:59
Datenbank: MSSQL Server • Version: 2000 • Zugriff über: ADO
Hallo!

brauche eine Stored Procedure, die in Schleife alle Datensätze einer Tabelle durchläuft und die Werte einer bestimmten Spalte ausliest. Ich möchte während der Schleife die Werte prüfen. Wie könnte so was aussehen?

Danke!
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 01:32
Relativ einfach wäre es, wenn du ..
das
Zitat:
Tabelle durchläuft und die Werte einer bestimmten Spalte
und das
Zitat:
Werte prüfen
etwas genauer angeben könntest.
z.B. Tabellenname, relevante Felder und deren Typen, Was soll passieren wenn das Feld eine Bedingung nicht erfüllt (Ausgabe, Löschen, Bearbeiten )???

Ich mache jetzt mal einen Schuss in Blaue. Wahrscheinlich ist es nicht das was du suchst ...

SQL-Code:
CREATE PROCEDURE dbo.Get_Checked_Usernames
AS
BEGIN
  -- ich definiere man, das ein User Vor- und Nachname hat, sonst ist der Datensatz ungültig..
  
  
  SELECT S.Vorname
         ,S.Nachname
  FROM SYS_Agents S
  WHERE S.Vorname IS NOT NULL
          AND
          S.Vorname <>''
          AND
          S.Nachname IS NOT NULL
          AND
          S.Nachname <>''
END
oder mit berechneter Spalte (z.B. incomplete)
SQL-Code:
CREATE PROCEDURE dbo.Get_Usernames
AS
BEGIN
  -- ich definiere man, das ein User Vor- und Nachname hat, sonst ist der Datensatz ungültig..
  
  
  SELECT S.Vorname
         ,S.Nachname
         ,CASE WHEN S.Vorname IS NULL
                    OR
                    S.Nachname IS NULL
                    OR
                    S.Vorname = ''
                    OR
                    S.Nachname = '
               THEN 1
               ELSE 0
          END AS [Incomplete]
  FROM SYS_Agents S

END

Um eine Datenmenge datensatzweise mit SQL zu durchlaufen, um dann wärend des Durchlaufs mit jedem einzelnen Datensatz etwas anzustellen brauchst du einen Cursor (s. MSDN)

  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 01:43
Hallo Jens

Diese Frage bezieht sich dein Tipp hier: http://www.delphipraxis.net/internal...ct.php?t=61747

Ich habe es gemacht und es funktioniert. Ich würde aber ab und zu eine SP laufen lassen, die "tote Logins" aus der Tabelle SYS_ActiveUser entfernt.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 02:13
Dafür brauchst du keine 2. SP.

Füge einfach vor dem letzten END folgenden Befehl ein

SQL-Code:
DELETE FROM SYS_ActiveUsers
WHERE ABS( DATEDIFF( SECOND,LAST_SEEN,GETDATE() ) ) > 7200
Dann löscht die SP selbst (bei jedem Login-Versuch, Logout, KeepAlive) alle Datensätze aus SYS_ActiveUsers, die seit mehr als 2 Stunden nicht mehr aktualisiert wurden.

Ist aber eigentlich nur für die Ordnung in der Tabelle...
Funktionell haben die Datensätze der "abgestürzten" User keinen Nachteil (insofern es keine 1000000 User gibt).

  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 02:57
Zitat von jensw_2000:
Füge einfach vor dem letzten END folgenden Befehl ein
Bekomme die Fehlermeldung Incorrect syntax near 'AU' Was ist den dieses AU?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 07:37
Hallo romber,

einfach weg mit dem Alias AU. So nützlich er in der FROM-Klausel eines SELECT ist - beim DELETE braucht man ihn nicht und von der Syntax her ist er auch nicht zugelassen.

Was mich bei deinen threads zu diesem Thema etwas irritiert: jensw und jelly u.a. haben sich ganz schön ins Zeug gelegt um ein technisches Problem zu lösen, für das ich die "fachliche Anforderung" nicht erkennen kann. Habe ich da etwas überlesen?

Grüße vom marabu
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#7

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 08:58
Zitat:
Bekomme die Fehlermeldung Incorrect syntax near 'AU'
Habe ich im o.A. Befehl korrigiert. Habe nicht bedacht, das Aliasnamen nur im SELECT unterstützt werden.

Zitat:
Was ist den dieses AU?
Wie gesagt, es ist (war) win Aliasname für die Tabelle SYS_ActiveUsers ...

Kleines Beispiel, wie Aliasnamen Tipparbeit sparen und den Code übersichtlicher machen ...

Eine einfache Abfrage über 2 gejointe Tabellen

SQL-Code:
SELECT TOP 100 PERCENT
       dbo.Mitarbeiter.Vorname
      ,dbo.Mitarbeiter.Nachname
      ,dbo.Aufgaben.Termin
      ,dbo.Aufgaben.Bezeichnung
FROM dbo.Aufgaben
INNER JOIN
  dbo.Mitarbeiter
  on dbo.Mitarbeiter.ID = dbo.Aufgaben.ID_Mitarbeiter
ORDER BY
  dbo.Mitarbeiter.Vorname
 ,dbo.Mitarbeiter.Nachname
 ,dbo.Aufgaben.Termin
Wenn der JOIN 10 Tabellen einschließt und im SELECT 30 Felder Ausgewählt werden, dann kann man den SQL Code vor lauter dbo.irgendwas nur noch schwehr lesen.


Mit Aliasnamen sieht die Abfrage viel übersichtlicher aus.
Definiert wird der Aliasname (A bzw. M) hinter dem Tabellennamen in der FROM bzw. JOIN Klausel

SQL-Code:
SELECT TOP 100 PERCENT
       M.Vorname
      ,M.Nachname
      ,A.Termin
      ,A.Bezeichnung
FROM dbo.Aufgaben A
INNER JOIN
  dbo.Mitarbeiter M
  on M.ID = A.ID_Mitarbeiter
ORDER BY
  M.Vorname
 ,M.Nachname
 ,A.Termin
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#8

Re: MSSQL Server: Datensätze durchgehen???

  Alt 24. Aug 2005, 10:39
Danke, probiere ich gleich aus!
  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 10:12 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