Name der aktuellen Prozedur ermitteln – @@PROCID

Die Systemvariable @@PROCID enthält die Objekt-ID einer aktuellen Gespeicherten Prozedur, einer Funktion oder eines Triggers. Ein kleines Beispiel soll dies verdeutlichen. Dazu ist zunächst im SQL Server Management Studio folgende Gespeicherte Prozedur anzulegen. CREATE PROC pWerWars AS SET NOCOUNT ON; DECLARE @Meldung nvarchar(1000); SET @Meldung = N’Dieses Ergebnis wurde Ihnen präsentiert von der Prozedur ‚ …

Applikationsname per T-SQL ermitteln – APP_NAME()

Die Funktion APP_NAME() liefert den Namen der Applikation, die das SQL Server-Objekt bzw. die SQL-Anweisung ausführt. Bei der Eingabe von SELECT APP_NAME() im SQL Server Management Studio erhält man folgendes Ergebnis: Eine Pass Through-Abfrage in Access mit der gleichen Anweisung liefert

Alphanumerische Spalten einer Tabelle

Hier eine kleine Abfrage zur Ermittlung der alphanumerischen Spalten einer Tabelle: SELECT             o.name As Tabelle, c.name As Spalte, c.column_id As Reihenfolge FROM                    sys.columns c INNER JOIN sys.objects o ON c.object_id = o.object_id                                     INNER JOIN sys.types t ON c.system_type_id = t.system_type_id WHERE               o.type = ‚u‘ …

SELECT-Statement mit variablem Tabellennamen

Frage: In einer SELECT-Anweisung soll der Tabellenname durch eine lokale Variable ersetzt werden. Lösung: In SQL-Anweisungen lassen Variablen sich zwar in Ausdrücken, nicht aber anstelle von Objektnamen oder Schlüsselwörtern verwenden. Um den Tabellennamen in einer SQL-Anweisung erst bei der Ausführung zu ersetzen, muss mit dynamischem SQL gearbeitet werden. Dazu wird das SQL-Statement bei der Ausführung …

RAISERROR

Frage: Trotz Auslösen eines RAISERROR mit Schweregrad 16 wird die Gespeicherte Prozedur nicht fehlerhaft beendet. Lösung: Der Schweregrad 16 beendet eine Gespeicherte Prozedur nur dann, wenn auch wirklich ein Fehler eingetreten ist. RAISERROR löst keinen Fehler aus, sondern belegt lediglich den @@ERROR-Wert mit der angegebenen Fehlernummer. Folgendes Skript soll das Verhalten von RAISERROR verdeutlichen: PRINT …

Daten skripten

Frage: Die Daten einiger Tabellen sollen als INSERT-Statements in eine Textdatei exportiert werden. Lösung: itrain bietet ein Skript an, mit dem solche INSERT-Statements erzeugt werden können. /* übernommen aus der Original sqlfaq.de */

Zeichen in String zählen

Frage: Gibt es eine Möglichkeit per SQL bestimmte Zeichen in einer Zeichenfolge zu zählen? Lösung: Eine Möglichkeit, vorgestellt von Josef Pötzl: Len(‚avcdafra‚) – Len(Replace(‚avcdafra‚,‘a‚,“)) /* übernommen aus der Original sqlfaq.de */

Registry auslesen

Frage: Per T-SQL sollen Werte aus der Registry gelesen werden. Lösung: Es gibt eine undokumentierte Gespeicherte Prozedur in der Datenbank master namens dbo.xp_regread mit den Parametern Rootkey, Path und Value. Hier ein kleines Beispiel: DECLARE @bla varchar(10) exec master.dbo.xp_regread @rootkey=’HKEY_LOCAL_MACHINE‘, @key=’SOFTWARE\…..‘, @value_name=’wert‘, @inhalt=@inhalt OUTPUT /* übernommen aus der Original sqlfaq.de */

Spalten eines Index ermitteln

Frage: Die Spalten eines Index sollen ermittelt werden. Lösung: Hier hilft die Gespeicherte Prozedur sp_helpindex ‚deineTabelle‚. /* übernommen aus der Original sqlfaq.de */

Integer-Wert mit führenden Nullen

Frage: Ein Integer-Wert soll mit führenden Nullen ausgegeben werden. Lösung: Eine Kombination der Befehle STR und REPLACE liefert den Integer-Wert mit führenden Nullen als String zurück. Folgendes Beispiel liefert „000001“: DECLARE @a INT SET @a = 1 SELECT REPLACE(STR(@a,6),‘ ‚,0) /* übernommen aus der Original sqlfaq.de */