Donnerstag, 23. Dezember 2010

Zeilenumbruch (T-SQL)

Ob eine E-Mail, ein DDL Skript oder ein Text in einer gespeicherten Prozedur mit T-SQL vorbereitet wird, sind Zeilenumbrüche angesagt. Folgende Beispiele zeigen, wie ein Zeilenumbruch mit T-SQL in eine Zeichenfolge eingefügt werden kann.
Um die Ergebnisse der Beispielskripten in der gleichen Form in SSMS zu sehen, soll man in SQL Server Management Studio die Ergebnisse in einem Text zurückgeben lassen, weil das SSMS die Multizeilen in der tabellarischen Ansicht nicht unterstützt.
Ein kleiner Tipp: Zwischen den Ausgaben im Tabellen- und Textformat wird mit CTRL+T und zurück mit CTRL+D umgeschaltet.
ASCII CARRIAGE RETURN (CR) + LINE FEED (LF)
declare @crlf char(2)
set @crlf = char(13) + char(10)
select 'row 1' + @crlf + 'row 2' as ascii_crlf
go

Hier ist das Resultset:
ascii_crlf
------------
row 1
row 2
UNICODE CARRIAGE RETURN (CR) + LINE FEED (LF)
declare @crlf nchar(2)
set @crlf = nchar(13) + nchar(10)
select 'row 1' + @crlf + 'row 2' as unicode_crlf
go

Hier ist das Resultset:
unicode_crlf
------------
row 1
row 2
UNICODE NEXT LINE (NEL)
declare @nel nchar(1)
set @nel = nchar(133)
select 'row 1' + @nel + 'row 2' as unicode_nel
go

Hier ist das Resultset:
unicode_nel
-----------
row 1
row 2
UNICODE LINE SEPARATOR (LS)
declare @ls nchar(1)
set @ls = nchar(8232)
select 'row 1' + @ls + 'row 2' as unicode_ls
go

Hier ist das Resultset
unicode_ls
-----------
row 1

row 2
UNICODE PARAGRAPH SEPARATOR (PS)
declare @ps nchar(1)
set @ps = nchar(8233)
select 'row 1' + @ps + 'row 2' as unicode_ps
go

Hier ist das Resultset:
unicode_ps
-----------
row 1

row 2

Mittwoch, 22. Dezember 2010

Vervollständigung von built-in Funktionsnamen

Standardmäßig vervollständigt SQL Server Management Studio die Namen der integrierten Funktionen (z.B. isnull) mit Großbuchstaben. Möchte man eine andere Schreibweise haben, kann es geändert werden, indem das Fenster Options geöffnet und der gewünschte Wert der Eigenschaft Casing for built-in functions names ausgewählt wird.
Tools->Options->Text Editior->Transact-SQL->IntelliSense->Casing for built-in function names

Sonntag, 19. Dezember 2010

'true' und 'false' können in bit-Werte konvertiert werden

Schon gewusst, dass die Zeichenfolgenwerte true und false in bit-Werte (1 und 0) konvertiert werden können?
Beispiel A: Konvertierung in einem Insert
use tempdb
go
create table t1([true] bit, [false] bit)
go
insert into t1 values('true','false')
go
select * from t1
go
drop table t1
go
Hier ist das Resultset:
true  false
----- -----
1     0
Beispiel B: Konvertierung in einer Abfrage
select
    (cast('true' as bit)) [true],
    (cast('false' as bit)) [false]
go
Hier ist das Resultset:
true  false
----- -----
1     0

Sonntag, 12. Dezember 2010

object_id der aktuellen gespeicherten Prozedur ermitteln

Mit Hilfe der Funktion @@procid kann man die object_id der aktuellen gespeicherten Prozedur, Trigger oder Funktion ermitteln und z.B. bei Logging und Fehlerbehandlung einsetzen.

use tempdb
go

create proc proc1
as
begin
       print object_name(@@procid)
end
go

exec proc1
go

drop proc proc1
go