![]() |
Datenbank: MSSQL Server • Version: 2000 • Zugriff über: ADO
MSSQL Server: Datensätze durchgehen???
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! |
Re: MSSQL Server: Datensätze durchgehen???
Relativ einfach wäre es, wenn du ..
das Zitat:
Zitat:
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:
oder mit berechneter Spalte (z.B. incomplete)
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
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 ( ![]() :hi: |
Re: MSSQL Server: Datensätze durchgehen???
Hallo Jens :hi:
Diese Frage bezieht sich dein Tipp hier: ![]() 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. |
Re: MSSQL Server: Datensätze durchgehen???
Dafür brauchst du keine 2. SP.
Füge einfach vor dem letzten END folgenden Befehl ein
SQL-Code:
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.
DELETE FROM SYS_ActiveUsers
WHERE ABS( DATEDIFF( SECOND,LAST_SEEN,GETDATE() ) ) > 7200 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). :hi: |
Re: MSSQL Server: Datensätze durchgehen???
Zitat:
|
Re: MSSQL Server: Datensätze durchgehen???
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 |
Re: MSSQL Server: Datensätze durchgehen???
Zitat:
Zitat:
Kleines Beispiel, wie Aliasnamen Tipparbeit sparen und den Code übersichtlicher machen ... Eine einfache Abfrage über 2 gejointe Tabellen
SQL-Code:
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.
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 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 |
Re: MSSQL Server: Datensätze durchgehen???
Danke, probiere ich gleich aus!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 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-2025 by Thomas Breitkreuz