Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all articles
Browse latest Browse all 1772

Parameter in dyn.SQL

$
0
0

Hallo zusammen,

ich habe da mal wieder eine Frage :-)

Derzeit stelle ich meine Scripte um damit diese (für mich) besser lesbar sind, zudem schreibe ich Teile neu und anderst, denn man lernt (hier) ja immer gerne was dazu...

Da ich eigentlich ständig abfragen über alle Datenbanken mache, verwende ich dynamisches SQL da ich hier den Datenbanknamen und Owner/Schema innerhalb eines Cursors verwenden kann.

Nun möchte ich den Datenbanknamen z.Bsp. auch über Parameter übergeben, aber das will nicht so recht.

Im alten Script hatte ich den Datenbanknamen (@engid) wie folgt übergeben:

set @sqlcommand =
	'select @ownerOUT = t.TABLE_SCHEMA '+
	'from ['+@engid+'].INFORMATION_SCHEMA.TABLES t '+
	'where t.TABLE_TYPE=''view'' and t.TABLE_SCHEMA <> ''ETL'''
set @sqlparameter =
	N'@ownerOUT nvarchar(max) output'
exec sp_executesql @sqlcommand, @sqlparameter, @ownerOUT=@owner output

Nun möchte ich den Datenbanknamen per Parameter übergeben:

set @sqlcommand =
	'select @ownerOUT = t.TABLE_SCHEMA '+
	'from [@engidIN].INFORMATION_SCHEMA.TABLES t '+
	'where t.TABLE_TYPE=''view'' and t.TABLE_SCHEMA <> ''ETL'''
set @sqlparameter =
	N'@engidIN nvarchar(max), @ownerOUT nvarchar(max) output'
exec sp_executesql @sqlcommand, @sqlparameter, @engidIN=@engid, @ownerOUT=@owner output

Führe ich das Script aus, bekomme ich den Fehler

Msg 208, Level 16, State 1, Line 1
Invalid object name '@engidIN.INFORMATION_SCHEMA.TABLES'.

Was mache ich falsch?

Viele Grüsse,
Maximilian


Viewing all articles
Browse latest Browse all 1772

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>