I need an sql statement that dynamically matches a database name in a stored proc. Here is my attempt
Select Table_name
From Information_schema.Tables
Where Table_type = 'BASE TABLE' and Objectproperty (Object_id(Table_name), 'IsMsShipped') = 0
and table_name like 'Item%'
and (DATABASENAME=?)
Can someone help me out?
Thanks.
Try the DB_NAME() function.
|||
DB_NAME() works but if i have to run this query dynamically in the database as per the database parameter how do i do it?
like
declare @.dbname varchar(100)
Select Table_name
From Information_schema.Tables
Where Table_type = 'BASE TABLE' and Objectproperty (Object_id(Table_name), 'IsMsShipped') = 0
and table_name like 'Item%Master'
and DB_NAME=@.dbname
|||You need to use dynamic SQL to execute commands in multiple databases at run-time. See example below on how to do it the safe way (without SQL injection risks):
Code Snippet
-- SQL Server 2005 version:
-- Will work with minimal changes in SQL Server 2000 too:
declare @.sp nvarchar(500), @.dbname nvarchar(128);
declare @.dbs cursor;
set @.dbs = cursor fast_forward for
select name from sys.databases
where name not in ('master', 'model', 'msdb', 'tempdb');
open @.dbs;
while(1=1)
begin
fetch @.dbs into @.dbname;
if @.@.fetch_status < 0 break;
set @.sp = quotename(@.dbname) + N'.sys.sp_executesql';
exec @.sp N'
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = ''BASE TABLE''
AND OBJECTPROPERTY(OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + N''.'' + QUOTENAME(TABLE_NAME)),
''IsMSShipped'') = 0
'
end;
No comments:
Post a Comment