Home » Applikationen » MSSQL
Manchmal braucht man mehr als einen Wert in einer Variable. Dann kann man diese auch als Tabelle definieren:
DECLARE @Kunde table ([Kunden-Name] varchar(50), [Kunden-Status] varchar(10))
Die Variablen kann man dann über Standard-Statements befüllen und abfragen:
INSERT INTO @Kunde VALUES ('Kunde1','aktiv');
INSERT INTO @Kunde VALUES ('Kunde2','gekündigt');
INSERT INTO @Kunde VALUES ('Kunde3','inArbeit');
SELECT * FROM @Kunde
Kunden-Name Kunden-Status
-------------------------------------------------- -------------
Kunde1 aktiv
Kunde2 gekündigt
Kunde3 inArbeit
Verwendung der Variable in WHERE-Klausel:
SELECT * from Vertraege WHERE Kundenstatus IN (SELECT [Kunden-Status] FROM @Kunde)
Folgende Beschreibung hab ich im entwickler-forum.de gefunden.
Über die DATEPART-Funktion kann eine SELECT-Abfrage nur bestimmte Bestandteile zurückliefern.
DECLARE @mydatetime DATETIME
DECLARE @myms INT
DECLARE @myss INT
DECLARE @mymi INT
DECLARE @myhh INT
DECLARE @mydd INT
DECLARE @mymm INT
DECLARE @myyyyy INT
SET @mydatetime=getdate()
SET @myms = DATEPART(ms,@mydatetime)
SET @myss = DATEPART(ss,@mydatetime)
SET @mymi = DATEPART(mi,@mydatetime)
SET @myhh = DATEPART(hh,@mydatetime)
SET @mydd = DATEPART(dd, @mydatetime)
SET @mymm=DATEPART(mm,@mydatetime)
SET @myyyyy = DATEPART(yyyy, @mydatetime)
SELECT @myyyyy AS 'Year', @mymm AS 'Month', @mydd AS 'Day of month',
@myhh AS 'Hour', @mymi AS 'Minute', @myss AS 'Second',
@myms AS 'Millisecond'
Mit dem folgenden Snippet kann man sich den Status einer gespiegelten MS-SQL-Datenbank und die Rolle des aktuellen Servers anzeigen lassen:
-- Die Abfrage ist für die Serverrolle public möglich.
SELECT mirroring_role_desc AS 'Rolle', mirroring_state_desc AS 'Status'
FROM sys.database_mirroring
WHERE mirroring_guid IS NOT NULL
AND database_id=(
SELECT dbid FROM master.dbo.sysdatabases WHERE name = '<Datenbankname>'
)