2016-11-04 6 views
1
Create view xxx 
as 
Select * from 
DBName.dbo.table1 

DBNameは動的です。このビューを作成するにはどうすればよいですか?ビューでは動的変数を使用できないことはわかっています。私はそれがどのように機能の助けを借りてできるのか知りたかったのです。ビュー内での動的DB名の使用

+0

それはビューでなければなりませんか? –

+0

はい。それはビューでなければなりません。私はselect *の出力をテーブル値関数を介してビューから呼び出すことを考えていました。私が正しい場合、関数内で動的変数を使用することができます – RAJ

+0

残念ながら、関数内で動的SQLを使用することはできません。詳細はこちら[http://stackoverflow.com/questions/9607935/call-dynamic-sql-from-関数)。 –

答えて

0

用途この

Declare @Dbname varchar(255) 
Declare @qry varchar(255) 

Set @Dbname="Name of the dataBase" 

Set @qry='Create synonym ABC for'[email protected]+'.dbo.table1' 
Exec (@qry) 

のような変数は、今すぐ下記を使用してより良く理解するために、この

IF EXISTS (SELECT 1 from sysobjects where id=object_id(''SN_DWTableCustomer'') and xtype=''SN'') 
BEGIN 
DROP VIEW xxx 
Create view xxx as Select * from ABC 
END 
ELSE 
BEGIN 
Create view xxx as Select * from ABC 
END 

を使用すると、 https://www.techonthenet.com/oracle/synonyms.php What is the use of SYNONYM in SQL Server 2008?

をしてくださいリンクとしてだけDBNAMEを通過し、ここでシノニムを使用することができます応答。

+0

しかし、DBNameが変更された場合はどうなりますか?上記のコードを実行してビューを作成する必要があります。他にも解決策がありますか? – RAJ

+0

単にビューを削除し、再度作成するか、別のテーブルで表示する必要があります。 –

0
DECLARE @DBname varchar(max) = 'newdb' 
DECLARE @sql varchar(max) = 'create view MyView as select * from '[email protected]+'.dbo.test' 

EXEC (@sql) 

SELECT * FROM MyView 
+0

DBNameが変更された場合はどうなりますか?上記のコードを実行してビューを作成する必要があります。他にも解決策がありますか? – RAJ

+0

次に、上記の最初の3行を@DBNameパラメータでストアドプロシージャを作成し、spを実行することができます。この解決策があなたの要求に合わない場合は、詳細をお知らせください – User

+0

私はSPを使用できません。私はselect *の出力をテーブル値関数を通してビューから呼び出すことを考えていました。私が正しい場合、関数では動的変数を使用できます – RAJ

0
DECLARE @DB VARCHAR(100) 
SET @DB = 'Your_DBName' DECLARE @CreateViewStatement NVARCHAR(MAX) 
SET @CreateViewStatement = '  USE '+ QUOTENAME(@DB) +';  
EXEC('' 
     CREATE VIEW [dbo].[MyTable] AS 
     SELECT * FROM Your_Table 
    '') ' 
EXEC (@CreateViewStatement) 
関連する問題