2012-01-23 10 views
1

私のSQLは次のようになります。私がしようとした場合データベース名がSQLCMDモード変数で定義されている場合、オブジェクト(関数)を作成する方法は?

:SETVAR VAR_DB_NAME DatabaseName.DBO 

SELECT * FROM $(VAR_DB_NAME).tableName 

:私はエラーを取得しています

CREATE FUNCTION $(VAR_DB_NAME).FunctionName 

:関数が存在する場合

CREATE/ALTER FUNCTION' does not allow specifying the database name as a prefix to the object name

はどのようにして確認することができますし、同じ変数を使用して作成/削除しますか?

答えて

1

エラーが示すように、CREATE文にデータベース名を含めることはできません。とにかく、ここで2つの変数を使用する方が良いでしょう

:SETVAR VAR_DB_NAME DatabaseName 
:SETVAR VAR_SCHEMA_NAME dbo 

use $(VAR_DB_NAME) 
go 

create function $(VAR_SCHEMA_NAME).foo() 
returns int 
as 
begin 
return (1) 
end 
go 

:これは動作します私の意見では、「DB_NAME」と呼ばれる変数は、(MIS)すべきではないスキーマ名を含めるために使用されます。

+0

完璧!ありがとうございました。それを自分で得ることができました:( – Sergejs