add files from DB4 day 1
This commit is contained in:
parent
b2d89f7338
commit
1db0e2b107
|
@ -0,0 +1,92 @@
|
|||
-- Beispiel 1
|
||||
|
||||
-- Variablen Deklaration
|
||||
declare @Z1 int, @Firstname varchar(50);
|
||||
|
||||
-- Set
|
||||
set @Z1 = 100;
|
||||
|
||||
-- Print
|
||||
print 'Zahl Z1 = ' + cast(@Z1 as varchar)
|
||||
|
||||
|
||||
-- Beispiel 2
|
||||
declare @Z1 int;
|
||||
|
||||
set @Z1 = 1000;
|
||||
if @Z1 > 100
|
||||
begin
|
||||
print 'Z1 ist eine grosse Zahl';
|
||||
end
|
||||
else
|
||||
begin
|
||||
print 'Z2 ist eine kleine Zahl';
|
||||
end
|
||||
|
||||
|
||||
-- Beispiel 3
|
||||
declare @num int
|
||||
set @num =(SELECT COUNT(*) FROM PA_MITARBEITER);
|
||||
if @num > 0
|
||||
print 'Total Abteilungen = ' + convert(varchar, @num);
|
||||
else
|
||||
print 'keine Abteilungen vorhanden';
|
||||
|
||||
|
||||
-- Beispiel 4
|
||||
declare @Nr varchar(20), @bez varchar(40);
|
||||
select @Nr=ABT_ABTNR, @bez = ABT_BEZ
|
||||
from PA_ABTEILUNG
|
||||
where ABT_ABTNR = 'DV1';
|
||||
|
||||
print 'Nr = ' + @Nr + ', Bezeichnung = ' + @bez;
|
||||
|
||||
|
||||
-- Beispiel 5
|
||||
go
|
||||
create procedure CalcSumProc (@Z1 int, @Z2 int, @Result int output)
|
||||
as
|
||||
set @Result = @Z1 + @Z2;
|
||||
go
|
||||
|
||||
declare @Sum int, @RetCode int;
|
||||
set @Sum = 0;
|
||||
exec CalcSumProc 1, 2, @Sum output;
|
||||
print 'Sum = ' + cast(@Sum as varchar);
|
||||
|
||||
|
||||
-- Beispiel 6
|
||||
go
|
||||
create function CalcSumFunc (@Z1 int, @Z2 int)
|
||||
returns int
|
||||
as
|
||||
begin
|
||||
declare @result int;
|
||||
|
||||
set @result = @Z1 + @Z2;
|
||||
return @Result
|
||||
end
|
||||
go
|
||||
|
||||
|
||||
|
||||
-- Beispiel 7
|
||||
declare @abtnr varchar(20), @abtbez varchar(50);
|
||||
|
||||
DECLARE Abteilung_Cursor CURSOR FOR
|
||||
SELECT ABT_ABTNR, ABT_BEZ
|
||||
FROM PA_ABTEILUNG
|
||||
ORDER BY ABT_BEZ;
|
||||
|
||||
OPEN Abteilung_Cursor;
|
||||
FETCH NEXT FROM Abteilung_Cursor
|
||||
into @abtnr, @abtbez;
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
print 'Nr = ' + @abtnr + ', Name = ' + @abtbez
|
||||
FETCH NEXT FROM Abteilung_Cursor
|
||||
into @abtnr, @abtbez;
|
||||
END;
|
||||
CLOSE Abteilung_Cursor;
|
||||
DEALLOCATE Abteilung_Cursor;
|
|
@ -0,0 +1,931 @@
|
|||
/*
|
||||
*******************************************************************************
|
||||
* *
|
||||
* SQL Server 2008 / 2008 R2 - Der schnelle Einstieg *
|
||||
* *
|
||||
* Kapitel 5 - Transact-SQL - Die Sprache zur Serverprogrammierung *
|
||||
* *
|
||||
* © 2009/2010, Klemens Konopasek *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
-- Variablen und Datentypen
|
||||
-- 5.1.1
|
||||
|
||||
|
||||
DECLARE @nachname varchar(50), @vorname varchar(50)
|
||||
DECLARE @gebdatum date
|
||||
|
||||
SET @nachname = (SELECT PersNachname
|
||||
FROM tblPersonal
|
||||
WHERE PersNr = 452)
|
||||
SET @vorname = (SELECT PersVorname
|
||||
FROM tblPersonal
|
||||
WHERE PersNr = 452)
|
||||
SET @gebdatum = (SELECT PersGebDatum
|
||||
FROM tblPersonal
|
||||
WHERE PersNr = 452)
|
||||
SELECT @nachname NN, @vorname VN, @gebdatum Geburtsdatum
|
||||
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
DECLARE @nachname varchar(50), @vorname varchar(50)
|
||||
DECLARE @gebdatum date
|
||||
|
||||
SELECT @nachname = PersNachname,
|
||||
@vorname = PersVorname,
|
||||
@gebdatum = PersGebDatum
|
||||
FROM tblPersonal
|
||||
WHERE PersNr = 452
|
||||
|
||||
SELECT @nachname NN, @vorname VN, @gebdatum Geburtsdatum
|
||||
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
DECLARE @ust tinyint
|
||||
DECLARE @netto smallmoney, @brutto smallmoney
|
||||
|
||||
SET @ust = 19
|
||||
SET @netto = 450
|
||||
SET @brutto = @netto * (@ust + 100) / 100
|
||||
|
||||
SELECT @netto Netto, @brutto Brutto
|
||||
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
DECLARE @nr int
|
||||
|
||||
SET @nr = @nr + 3
|
||||
SET @nr = @nr * 5
|
||||
|
||||
SELECT @nr Nr
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
DECLARE @plz varchar(5)
|
||||
|
||||
SET @plz = '8010'
|
||||
|
||||
SELECT PersNachname, PersVorname
|
||||
FROM tblPersonal
|
||||
WHERE PersPlz = @plz
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
DECLARE @nr int = 3
|
||||
SET @nr = @nr + 3
|
||||
SET @nr = @nr * 5
|
||||
SELECT @nr Nr
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Benutzerdefinierte Tabellentypen
|
||||
-- 5.1.2
|
||||
|
||||
CREATE TYPE KundenTab AS TABLE
|
||||
( kdnr int PRIMARY KEY,
|
||||
nachname varchar(50),
|
||||
vorname varchar(50)
|
||||
)
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
DECLARE @kunden KundenTab
|
||||
|
||||
INSERT INTO @kunden (kdnr, nachname, vorname)
|
||||
SELECT KdNr, KdNachname, KdVorname
|
||||
FROM dbo.tblKunden
|
||||
WHERE KdLand = 'D'
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
CREATE PROCEDURE dbo.spTabellenTest
|
||||
|
||||
@kdnamen KundenTab READONLY
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
SELECT UPPER(nachname) + ' ' + vorname AS Kunde
|
||||
FROM @kdnamen
|
||||
ORDER BY 1
|
||||
|
||||
END
|
||||
|
||||
|
||||
GO
|
||||
|
||||
|
||||
DECLARE @kunden KundenTab
|
||||
|
||||
INSERT INTO @kunden (kdnr, nachname, vorname)
|
||||
SELECT KdNr, KdNachname, KdVorname
|
||||
FROM dbo.tblKunden
|
||||
WHERE KdLand = 'D'
|
||||
|
||||
EXEC dbo.spTabellenTest @kunden
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Funktionen
|
||||
|
||||
-- 5.1.3
|
||||
|
||||
|
||||
SELECT @@language
|
||||
|
||||
SELECT @@servername
|
||||
|
||||
SELECT @@VERSION
|
||||
|
||||
SELECT SERVERPROPERTY('ProductVersion')
|
||||
|
||||
-- Datumsfunktionen
|
||||
|
||||
SELECT DATEADD(week, 3, '01.01.2010')
|
||||
|
||||
SELECT DATEDIFF(month, '08.01.2010', '15.11.2010')
|
||||
|
||||
SET LANGUAGE german
|
||||
SELECT DATENAME(weekday, '23.05.2010')
|
||||
SELECT DATEPART(weekday, '23.05.2010')
|
||||
|
||||
SET LANGUAGE english
|
||||
SELECT DATENAME(weekday, '05.23.2010')
|
||||
SELECT DATEPART(weekday, '05.23.2010')
|
||||
|
||||
SET LANGUAGE german
|
||||
SELECT DAY('20.04.2009') Tag, MONTH('20.04.2009') Monat, YEAR('20.04.2009') Jahr
|
||||
|
||||
SELECT GETDATE()
|
||||
|
||||
|
||||
SELECT ISDATE('24.12.2008'), ISDATE('240.12.2008')
|
||||
|
||||
SELECT CURRENT_TIMESTAMP
|
||||
SELECT Sysdatetime(), GETDATE()
|
||||
SELECT Sysutcdatetime()
|
||||
SELECT Sysdatetimeoffset()
|
||||
|
||||
SELECT Sysdatetimeoffset() AS Graz,
|
||||
Switchoffset(Sysdatetimeoffset(), '-08:00') AS Vancouver
|
||||
|
||||
SELECT Todatetimeoffset(Sysdatetime(), '-08:00')
|
||||
|
||||
|
||||
-- Mathematische Funktionen
|
||||
|
||||
SELECT ROUND(5.129, 2), ROUND(18452, -2), ROUND(1.99,1,1)
|
||||
|
||||
SELECT CEILING(5.129)
|
||||
|
||||
|
||||
-- Metadatenfunktionen
|
||||
|
||||
SELECT DB_NAME(), DB_NAME(1), DB_ID(), DB_ID('master')
|
||||
|
||||
SELECT COL_LENGTH('tblArtikel','Artbezeichnung') -- nur innerhalb der DB möglich!
|
||||
|
||||
SELECT COL_LENGTH('wawi.dbo.tblArtikel','Artbezeichnung') -- von jeder DB aus möglich!
|
||||
|
||||
SELECT OBJECT_ID('tblArtikel')
|
||||
|
||||
SELECT OBJECT_NAME('1511676433')
|
||||
|
||||
SELECT COL_NAME(OBJECT_ID('tblArtikel'), 2)
|
||||
|
||||
|
||||
-- Sicherheitsfunktionen
|
||||
|
||||
SELECT IS_MEMBER('db_owner')
|
||||
|
||||
|
||||
-- Zeichenfolgefunktionen
|
||||
|
||||
SELECT ASCII('m'), CHAR(109)
|
||||
|
||||
SELECT CHARINDEX(' ','SQL Server')
|
||||
|
||||
|
||||
DECLARE @name varchar(30), @vorname varchar(15)
|
||||
DECLARE @position int
|
||||
SET @name = 'Petra Konopasek'
|
||||
SET @position = CHARINDEX(' ', @name)
|
||||
SET @vorname = LEFT(@name, @position - 1)
|
||||
SELECT @vorname Vorname
|
||||
|
||||
|
||||
SELECT MAX(LEN(PersNachname)) [Längster Name]
|
||||
FROM tblPersonal;
|
||||
|
||||
SELECT PersVorname + ' ' + UPPER(PersNachname) Name
|
||||
FROM tblPersonal
|
||||
ORDER BY PersNachname;
|
||||
|
||||
SELECT REPLICATE('.', 15 - LEN(PersNachname)) + PersNachname Name
|
||||
FROM tblPersonal;
|
||||
|
||||
SELECT SOUNDEX('Maier') Maier,
|
||||
SOUNDEX('Meyer') Meyer,
|
||||
SOUNDEX('Mayer') Mayer,
|
||||
SOUNDEX('Peyer') Peyer,
|
||||
SOUNDEX('Ober') Ober,
|
||||
SOUNDEX('Obermann') Obermann,
|
||||
SOUNDEX('Hausmahn') Hausmahn
|
||||
|
||||
|
||||
SELECT ArtBezeichnung + ' kostet € '
|
||||
+ ArtVKPreis AS Preise
|
||||
FROM tblArtikel;
|
||||
|
||||
|
||||
SELECT ArtBezeichnung + ' kostet € '
|
||||
+ STR(ArtVKPreis, 5, 2) AS Preise
|
||||
FROM tblArtikel;
|
||||
|
||||
|
||||
|
||||
DECLARE @name varchar(30)
|
||||
DECLARE @nachname varchar(15)
|
||||
DECLARE @position int
|
||||
SET @name = 'Alina Konopasek'
|
||||
SET @position = CHARINDEX(' ', @name)
|
||||
SET @nachname = SUBSTRING(@name, @position + 1, 15)
|
||||
SELECT @nachname Nachname
|
||||
|
||||
|
||||
|
||||
SELECT SUBSTRING(@@VERSION, 35, 4) AS Version
|
||||
|
||||
|
||||
-- Systemfunktionen
|
||||
|
||||
SELECT SYSDATETIME() As Datum,
|
||||
CONVERT(varchar,SYSDATETIME(), 4) As [Jahr 2-stellig],
|
||||
CONVERT(varchar,SYSDATETIME(), 104) As [Jahr 4-stellig]
|
||||
|
||||
|
||||
|
||||
SELECT PersNachname FROM tblPersonal
|
||||
WHERE PersEintritt = '01.04.2001';
|
||||
|
||||
SELECT PersNachname FROM tblPersonal
|
||||
WHERE PersEintritt = '01.04.2001 8:00';
|
||||
|
||||
|
||||
SELECT GETDATE() As Datum,
|
||||
CONVERT(datetime,CONVERT(varchar,GETDATE(),4),4)
|
||||
As NurDatum
|
||||
|
||||
|
||||
|
||||
SELECT PersNachname FROM tblPersonal
|
||||
WHERE CAST(PersEintritt AS DATE)= '01.04.2001';
|
||||
|
||||
|
||||
|
||||
SELECT HOST_NAME() As Arbeitsplatz, HOST_ID() As ID
|
||||
|
||||
|
||||
|
||||
INSERT INTO tblArtikel (ArtBezeichnung, ArtGruppe,
|
||||
ArtVKpreis, ArtEKPreis, ArtLief)
|
||||
VALUES('Wassereimer 15L', 'GA', 3.99, 2.12, 1003);
|
||||
SELECT @@IDENTITY "Neue Artikelnunmmer"
|
||||
|
||||
|
||||
|
||||
SELECT KdTitel + ' ' + KdAkadGrad + ' '
|
||||
+ KdNachname + ' ' + KdVorname As Kunden
|
||||
FROM tblKunden
|
||||
ORDER BY KdNachname;
|
||||
|
||||
|
||||
|
||||
SELECT ISNULL(KdTitel + ' ','')
|
||||
+ ISNULL(KdAkadGrad + ' ', '')
|
||||
+ KdNachname + ' ' + KdVorname AS Kunden
|
||||
FROM tblKunden
|
||||
ORDER BY KdNachname;
|
||||
|
||||
|
||||
|
||||
BEGIN TRAN
|
||||
|
||||
UPDATE tblArtikel
|
||||
SET ArtVKPreis = ArtVKPreis * 0.95
|
||||
WHERE ArtVKPreis > 200;
|
||||
|
||||
SELECT @@ROWCOUNT "Anzahl um 5% verbilligt"
|
||||
|
||||
ROLLBACK TRAN
|
||||
|
||||
|
||||
-- Rangfolgefunktionen
|
||||
|
||||
|
||||
SELECT Artbezeichnung AS Bezeichnung,
|
||||
ArtVKPreis AS Preis,
|
||||
RANK() OVER( ORDER BY ArtVKPreis DESC) AS Rang
|
||||
FROM tblArtikel;
|
||||
|
||||
|
||||
SELECT Artbezeichnung Bezeichnung,
|
||||
ArtVKPreis Preis,
|
||||
ArtGruppe Gruppe,
|
||||
RANK() OVER( PARTITION BY ArtGruppe
|
||||
ORDER BY ArtVKPreis DESC) AS Rang
|
||||
FROM dbo.tblArtikel;
|
||||
|
||||
|
||||
|
||||
|
||||
SELECT Artbezeichnung Bezeichnung,
|
||||
ArtVKPreis Preis,
|
||||
DENSE_RANK() OVER(ORDER BY ArtVKPreis DESC) AS Rang
|
||||
FROM dbo.tblArtikel;
|
||||
|
||||
|
||||
|
||||
SELECT PersNachname AS Nachname,
|
||||
PersVorname As Vorname,
|
||||
NTILE(5) OVER( ORDER BY PersGebDatum) AS Gruppe
|
||||
FROM tblPersonal;
|
||||
|
||||
|
||||
SELECT Artbezeichnung AS Bezeichnung,
|
||||
ArtVKPreis AS Preis,
|
||||
ROW_NUMBER() OVER( ORDER BY ArtVKPreis DESC) AS "lfd. Nr."
|
||||
FROM tblArtikel;
|
||||
|
||||
|
||||
|
||||
|
||||
-- Hierarchie-ID-Funktionen
|
||||
|
||||
DECLARE @root hierarchyid
|
||||
SET @root = hierarchyid::GetRoot()
|
||||
SELECT @root.ToString() AS Wurzeleintrag, @root AS WurzelID
|
||||
|
||||
|
||||
DECLARE @nachfolger hierarchyid
|
||||
SET @nachfolger = @root.GetDescendant(NULL, NULL)
|
||||
SELECT @nachfolger.ToString() AS Nachfolger
|
||||
|
||||
SELECT @nachfolger.IsDescendantOf(@root) AS IstNachfolger1,
|
||||
@root.IsDescendantOf(@nachfolger) AS IstNachfolger2
|
||||
|
||||
SELECT @root.GetLevel() AS LevelRoot,
|
||||
@nachfolger.GetLevel() AS LevelNachfolger
|
||||
|
||||
DECLARE @vorgaenger hierarchyid
|
||||
SET @vorgaenger = @nachfolger.GetAncestor(1)
|
||||
SELECT @vorgaenger.ToString() As Vorgänger
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
-- Kontrollstrukturen
|
||||
|
||||
|
||||
-- 5.1.4
|
||||
GO
|
||||
|
||||
|
||||
DECLARE @monat tinyint
|
||||
SET @monat = MONTH(GETDATE())
|
||||
IF @monat <= 6
|
||||
PRINT 'Wir sind in der ersten Jahreshälfte.'
|
||||
ELSE
|
||||
PRINT 'Wir befinden uns im zweiten Halbjahr.'
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
GO
|
||||
|
||||
DECLARE @kunde int
|
||||
DECLARE @interesse char(3)
|
||||
|
||||
SET @kunde = 136
|
||||
SET @interesse = 'HUG'
|
||||
|
||||
INSERT INTO tblKundeninteressen
|
||||
VALUES (@kunde, @interesse)
|
||||
|
||||
|
||||
SELECT * FROM tblKunden;
|
||||
SELECT * FROM tblKundenInteressen;
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
DECLARE @kunde int
|
||||
DECLARE @interesse char(3)
|
||||
|
||||
SET @kunde = 136
|
||||
SET @interesse = 'HUG'
|
||||
|
||||
IF (SELECT COUNT(*) FROM tblKundenInteressen
|
||||
WHERE KdNr = @kunde AND IntCode = @interesse) = 1
|
||||
PRINT 'Zuordnung bereits vorhanden.'
|
||||
ELSE
|
||||
INSERT INTO tblKundenInteressen
|
||||
VALUES (@kunde, @interesse);
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
BEGIN TRAN
|
||||
|
||||
DECLARE @kunde int
|
||||
DECLARE @interesse char(3)
|
||||
|
||||
SET @kunde = 136
|
||||
SET @interesse = 'SPO'
|
||||
|
||||
IF (SELECT COUNT(*) FROM tblKundenInteressen
|
||||
WHERE KdNr = @kunde AND IntCode = @interesse) = 1
|
||||
PRINT 'Zuordnung bereits vorhanden.'
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO tblKundenInteressen
|
||||
VALUES (@kunde, @interesse);
|
||||
PRINT 'Interesse wurde zugewiesen.'
|
||||
END
|
||||
|
||||
|
||||
--ROLLBACK TRAN
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
IF MONTH(SYSDATETIME()) IN(1,2,3,4,5)
|
||||
PRINT 'Vorsaison'
|
||||
ELSE
|
||||
IF MONTH(SYSDATETIME()) IN(6,7,8,9)
|
||||
PRINT 'Hauptsaison'
|
||||
ELSE
|
||||
PRINT 'Nachsaison'
|
||||
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
IF MONTH(SYSDATETIME()) IN(1,2,3,4,5)
|
||||
PRINT 'Vorsaison'
|
||||
ELSE
|
||||
IF MONTH(SYSDATETIME()) IN(6,7,8,9)
|
||||
BEGIN
|
||||
PRINT 'Hauptsaison'
|
||||
PRINT 'Hier ist alles sehr teuer.'
|
||||
END
|
||||
ELSE
|
||||
PRINT 'Nachsaison'
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
DECLARE @kunde int
|
||||
DECLARE @interesse char(3)
|
||||
|
||||
SET @kunde = 132
|
||||
SET @interesse = 'SPO'
|
||||
|
||||
IF (SELECT COUNT(*) FROM tblKundenInteressen
|
||||
WHERE KdNr = @kunde AND IntCode = @interesse) = 1
|
||||
OR (SELECT KdAktiv FROM tblKunden
|
||||
WHERE KdNr = @kunde) = 0
|
||||
PRINT 'Zuordnung bereits vorhanden oder Kunde nicht mehr aktiv.'
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO tblKundenInteressen
|
||||
VALUES (@kunde, @interesse);
|
||||
PRINT 'Interesse wurde zugewiesen.'
|
||||
END
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
|
||||
DECLARE @wotag varchar(10)
|
||||
SET @wotag = CASE DATEPART(weekday, SYSDATETIME())
|
||||
WHEN 1 THEN 'Montag'
|
||||
WHEN 2 THEN 'Dienstag'
|
||||
WHEN 3 THEN 'Mittwoch'
|
||||
WHEN 4 THEN 'Donnerstag'
|
||||
WHEN 5 THEN 'Freistag'
|
||||
WHEN 6 THEN 'Samstag'
|
||||
ELSE 'Sonntag'
|
||||
END
|
||||
SELECT @wotag [Heute ist]
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
DECLARE @typ varchar(10)
|
||||
SET @typ = CASE WHEN DATEPART(weekday, GETDATE()) < 6
|
||||
THEN 'Arbeitstag'
|
||||
ELSE 'Wochenende' END
|
||||
SELECT @typ "Heute ist"
|
||||
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
|
||||
SELECT CASE PersGeschlecht WHEN 1 THEN 'Frau' ELSE 'Herr' END Anrede,
|
||||
PersVorname Vorname,
|
||||
PersNachname Nachname
|
||||
FROM tblPersonal
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
-- Cursor für Datenzugriffe einsetzen
|
||||
|
||||
|
||||
-- 5.1.5
|
||||
|
||||
|
||||
DECLARE @kdnr int
|
||||
DECLARE @nachname varchar(50)
|
||||
|
||||
|
||||
DECLARE kunden_cursor CURSOR LOCAL STATIC
|
||||
FOR
|
||||
SELECT KdNr, KdNachname
|
||||
FROM tblKunden
|
||||
WHERE KdAktiv = 1
|
||||
|
||||
OPEN kunden_cursor
|
||||
FETCH NEXT FROM kunden_cursor INTO @kdnr, @nachname
|
||||
|
||||
|
||||
WHILE @@fetch_status = 0
|
||||
BEGIN
|
||||
--...
|
||||
FETCH NEXT FROM kunden_cursor INTO @kdnr, @nachname
|
||||
END
|
||||
|
||||
|
||||
CLOSE kunden_cursor
|
||||
DEALLOCATE kunden_cursor
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
-- Transaktionssteuerung
|
||||
|
||||
|
||||
-- 5.2.1
|
||||
|
||||
DELETE FROM tblKunden WHERE KdAktiv = 0;
|
||||
|
||||
|
||||
|
||||
-- 5.2.2
|
||||
|
||||
SELECT * FROM tblTestpersonal;
|
||||
|
||||
|
||||
UPDATE tblTestpersonal
|
||||
SET Nachname = 'Untermann'
|
||||
WHERE Nr = 101;
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM tblTestpersonal
|
||||
WHERE Nr = 101;
|
||||
|
||||
|
||||
ROLLBACK TRAN
|
||||
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
|
||||
DELETE FROM tblTestpersonal
|
||||
WHERE Abtlg IN('MA', 'EK');
|
||||
|
||||
|
||||
INSERT INTO tblTestpersonal
|
||||
VALUES(700, 'Deutschmann', 'MA', SYSDATETIME());
|
||||
|
||||
|
||||
SELECT * FROM tblTestpersonal ORDER BY Nr;
|
||||
|
||||
|
||||
ROLLBACK TRANSACTION
|
||||
|
||||
|
||||
SELECT * FROM tblTestpersonal ORDER BY Nr;
|
||||
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
|
||||
DELETE FROM tblTestpersonal
|
||||
WHERE Abtlg = 'GL';
|
||||
|
||||
|
||||
INSERT INTO tblTestpersonal
|
||||
VALUES(700, 'Deutschmann', 'MA', SYSDATETIME());
|
||||
|
||||
|
||||
COMMIT TRANSACTION
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
-- SET-Optionen verwenden
|
||||
|
||||
-- 5.3
|
||||
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
DECLARE @agrad varchar(10)
|
||||
SET @agrad = Null
|
||||
|
||||
SELECT PersNachname, PersAkadGrad
|
||||
FROM tblPersonal
|
||||
WHERE PersAkadGRad = @agrad;
|
||||
|
||||
|
||||
|
||||
GO
|
||||
|
||||
|
||||
SET ANSI_NULLS OFF
|
||||
DECLARE @agrad varchar(10)
|
||||
SET @agrad = Null
|
||||
|
||||
SELECT PersNachname, PersAkadGrad
|
||||
FROM tblPersonal
|
||||
WHERE PersAkadGRad != @agrad;
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
SELECT PersAkadGrad + ' ' + PersNachname AS Mitarbeiter
|
||||
FROM tblPersonal;
|
||||
|
||||
|
||||
SET CONCAT_NULL_YIELDS_NULL OFF
|
||||
|
||||
SELECT LTRIM(PersAkadGrad + ' ' + PersNachname) AS Mitarbeiter
|
||||
FROM tblPersonal;
|
||||
|
||||
SET CONCAT_NULL_YIELDS_NULL ON
|
||||
|
||||
SELECT ISNULL(PersAkadGrad + ' ', '') + PersNachname AS Mitarbeiter
|
||||
FROM tblPersonal;
|
||||
|
||||
|
||||
GO
|
||||
-- *************************************************************************
|
||||
|
||||
SET DATEFIRST 1
|
||||
SELECT DATEPART(weekday, '01.01.2010') As Tag
|
||||
|
||||
SET DATEFIRST 7
|
||||
SELECT DATEPART(weekday, '01.01.2010') As Tag
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
SET DATEFORMAT dmy
|
||||
DECLARE @datum datetime
|
||||
SET @datum = '15.08.2010'
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
SET IDENTITY_INSERT tblArtikel ON
|
||||
|
||||
INSERT INTO tblArtikel (ArtNr, ArtBezeichnung, ArtGruppe,
|
||||
ArtVKpreis, ArtEKPreis, ArtLief)
|
||||
VALUES (2222, 'Gartenschlauch 15m', 'GA', 23.99,
|
||||
17.11, 1003);
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
SELECT langid, name, alias, dateformat, datefirst
|
||||
FROM master.sys.syslanguages;
|
||||
|
||||
SET LANGUAGE english
|
||||
SET LANGUAGE français
|
||||
SET LANGUAGE german
|
||||
SET LANGUAGE latviešu
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
CREATE TABLE quot_id_test
|
||||
( ID int,
|
||||
"Kunden Name" varchar(60) );
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
SET ROWCOUNT 5
|
||||
|
||||
SELECT PersNr, PersNachname, Persvorname
|
||||
FROM tblPersonal
|
||||
ORDER BY 1;
|
||||
|
||||
SET ROWCOUNT 0
|
||||
|
||||
|
||||
|
||||
|
||||
-- *************************************************************************
|
||||
|
||||
-- Fehlerbehandlung
|
||||
|
||||
-- 5.4
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @gruppe char(2), @name varchar(30)
|
||||
|
||||
SET @gruppe = 'GE'
|
||||
SET @name = 'Geschirr'
|
||||
|
||||
INSERT INTO dbo.tblArtikelGruppen (ArtGr, ArtGrText)
|
||||
VALUES (@gruppe, @name);
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
SELECT 'Fehler!' As Ergebnis
|
||||
ELSE
|
||||
SELECT 'Erledigt ;-)' As Ergebnis
|
||||
|
||||
|
||||
GO
|
||||
|
||||
-- Fehler "vermeiden"
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @gruppe char(2), @name varchar(30)
|
||||
|
||||
SET @gruppe = 'GE'
|
||||
SET @name = 'Geschirr'
|
||||
|
||||
IF exists ( SELECT *
|
||||
FROM dbo.tblArtikelGruppen
|
||||
WHERE ArtGr = @gruppe)
|
||||
SELECT 'Fehler!' As Ergebnis
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO dbo.tblArtikelGruppen
|
||||
VALUES (@gruppe, @name);
|
||||
SELECT 'Erledigt ;-)' As Ergebnis
|
||||
END
|
||||
|
||||
|
||||
GO
|
||||
|
||||
-- Fehler "behandeln"
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @gruppe char(2), @name varchar(30)
|
||||
|
||||
SET @gruppe = 'GE'
|
||||
SET @name = 'Geschirr'
|
||||
|
||||
BEGIN TRY
|
||||
INSERT INTO dbo.tblArtikelGruppen
|
||||
VALUES (@gruppe, @name);
|
||||
SELECT 'Erledigt ;-)' As Ergebnis
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SELECT 'Fehler!' As Ergebnis
|
||||
END CATCH
|
||||
|
||||
|
||||
|
||||
GO
|
||||
|
||||
-- inkl. Transaktion
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @gruppe char(2), @name varchar(30)
|
||||
|
||||
SET @gruppe = 'GE'
|
||||
SET @name = 'Geschirr'
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION
|
||||
|
||||
INSERT INTO dbo.tblArtikelGruppen
|
||||
VALUES (@gruppe, @name);
|
||||
|
||||
COMMIT TRANSACTION
|
||||
|
||||
SELECT 'Erledigt ;-)' As Ergebnis
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
ROLLBACK TRANSACTION
|
||||
SELECT 'Fehler!' As Ergebnis
|
||||
END CATCH
|
||||
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
-- Ausgabe Fehlermeldung
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @gruppe char(2), @name varchar(30)
|
||||
|
||||
SET @gruppe = 'GE'
|
||||
SET @name = 'Geschirr'
|
||||
|
||||
BEGIN TRY
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
INSERT INTO dbo.tblArtikelGruppen
|
||||
VALUES (@gruppe, @name);
|
||||
|
||||
COMMIT TRANSACTION
|
||||
|
||||
SELECT 'Erledigt ;-)' As Ergebnis
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
ROLLBACK
|
||||
SELECT ERROR_MESSAGE() As Ergebnis
|
||||
END CATCH
|
||||
|
||||
|
||||
GO
|
|
@ -0,0 +1,27 @@
|
|||
use Berater;
|
||||
go
|
||||
|
||||
create FUNCTION fBestverdiener()
|
||||
RETURNS varchar(100)
|
||||
|
||||
AS BEGIN
|
||||
DECLARE @nr int,
|
||||
@nachname varchar(50),
|
||||
@vorname varchar(50),
|
||||
@aufgabe varchar(30)
|
||||
--set nocount on
|
||||
|
||||
SELECT @nr = b.BERATERID,
|
||||
@nachname = b.BERATERNAME,
|
||||
@aufgabe = a.AUFGABE
|
||||
FROM BERATER b INNER JOIN AUFGABE a
|
||||
ON b.AUFGABEID = a.AUFGABEID
|
||||
WHERE b.STUNDENLOHN = (SELECT MAX(STUNDENLOHN)
|
||||
FROM BERATER)
|
||||
|
||||
Return convert(varchar,@nr) + ',' + @nachname + ',' + @aufgabe
|
||||
END
|
||||
go
|
||||
|
||||
|
||||
select dbo.fBestverdiener(), BERATERNAME FROM BERATER;
|
Reference in New Issue