pcfjkg
Goto Top

MS-SQL SERVER 2008 in einer gespeicherten Prozedur Variable verwenden

Im INFORMATION_SCHEMA.TABLES verschiedener Datenbanken soll die Existenz von Tabellen ermittelt werden.

IF EXISTS (SELECT TABLE_NAME FROM Datenbank.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME =NameDerTabelle) ist eine Aufruf, welcher bei TRUE die Existenz von NameDer Tabelle anzeigt.

Gibt es eine Syntax (oder einen Trick), um in einer GP z.B. mit

DECLARE @cmdstr nvarchar(500)
SET @cmdstr='IF EXISTS (SELECT TABLE_NAME FROM ['+@DB_Name+'].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME ='+@TVP_Name+')'
EXEC (@CmdStr)

o.ä. die Booleanrückgabe auszuwerten ? Kann EXEX vielleicht so etwas ?

Im voraus Danke für jede Antwort.

PCFJKG

Content-ID: 150373

Url: https://administrator.de/contentid/150373

Ausgedruckt am: 24.11.2024 um 04:11 Uhr

Berrnd
Berrnd 10.09.2010 um 22:36:26 Uhr
Goto Top
Hi,

du willst also den Wert, ob's die Tabelle gibt oder nicht, als Bool haben?
...Das würde ich so machen (Beispiel):
DECLARE @Return BIT

SELECT @Return = CASE WHEN COUNT(*) >= 1 THEN 1 ELSE 0 END
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'DeineTabelle'  
Gruß
Bernd
PCFJKG
PCFJKG 12.09.2010 um 12:54:41 Uhr
Goto Top
Hallo Bernd,

zunächst Dank für Deine Antwort. Mein Problem ist eher, dass ['+@DB_Name+'] variabel ist und deshalb nicht direkt in der GP mit SQL Kommandos verwendet werden kann. Ich muß deshalb den jeweiligen Datenbankname einer Stringvariablen übergeben (@CmdStr). Dann kann EXEC(@CmdStr) die Stringvariable ausführen. Aber: Wie bekomme ich das Ergebnis von EXEC(@CmdStr) in der GP zur Verfügung gestellt, eal ob als Boolean oder sonstwie ?

Vielleicht hast Du da noch eine Idee (falls es überhaupt geht) ...

Nochmal danke,

viele Grüße


PCFJKG