2015-03-31 65 views
0

我需要獲取SQL Server中的所有表名。爲此,我使用此代碼:如何在SQL Server中動態使用數據庫名稱

select TABLE_NAME 
from INFORMATION_SCHEMA.TABLES 

我需要使用動態數據庫名稱。爲此,我嘗試使用此代碼:

Declare @dbName varchar(50)='Learn' 

use @dbname 
go 

select TABLE_NAME 
from INFORMATION_SCHEMA.TABLES 

但它不起作用。我怎樣才能做到這一點 ?

回答

2
DECLARE @dbName varchar(50)='Learn' 
EXEC ('SELECT TABLE_NAME FROM ' [email protected]+'.INFORMATION_SCHEMA.TABLES'); 

或者乾脆:

SELECT TABLE_NAME FROM Learn.INFORMATION_SCHEMA.TABLES 
1
DECLARE @sql varchar(max) 
Declare @dbName varchar(50)='Learn' 
SET @sql=' 
use '[email protected]+' 
go 

select TABLE_NAME 
from INFORMATION_SCHEMA.TABLES' 
exec (@sql) 
2

創建主DB這個存儲過程,並稱之爲

CREATE PROCEDURE custom_query_executor 
    @dbName  VARCHAR(50) 
AS 
BEGIN 
    DECLARE @query_string nvarchar(4000); 

    SET @query_string = 'select TABLE_NAME from ' + CAST(@dbName AS NVARCHAR) +'.INFORMATION_SCHEMA.TABLES'; 
    EXEC sys.sp_executesql @query_string; 
END 

或者你可以試試這個

DECLARE @dbName VARCHAR(50); 
SET @dbName = 'Learn'; 

SET @query_string = 'select TABLE_NAME from ' + CAST(@dbName AS NVARCHAR) +'.INFORMATION_SCHEMA.TABLES'; 
EXEC sys.sp_executesql @query_string; 
相關問題