create function test
(
@tblName as sysname,
@category as varchar(50)
)
returns int
as
begin
declare @val2 as int
select @val2=val1 from @tblName where [email protected]
return @val2
end
いただきましたこのクエリと間違って、それは次のようなエラーUD scaller関数のパラメータとしてテーブル名を渡す方法は?
メッセージ1087、レベル15、状態2、プロシージャのテストを投げ、11行目
は、テーブル変数を宣言しなければなりません "@tblName"。 tblName1 @
のようなものになります。しかし、私上記のクエリはハードコーディングされた値の関数を作ることを私に示唆しています。私の要件は全く異なります。関数はすべてのテーブル名をパラメータとして呼び出さなければなりません。 – NoviceToDotNet
@Novice - 関数では不可能な動的SQLが必要です。とにかくこのタイプのテクニックは、SQL Serverでは決して良いアイデアではなく、おそらく悪いデザインを示しています。あなたが照会したいテーブルを事前に知っているのはなぜですか? 'val1'カラムを持つこれらのテーブルは全く別であるべきですか? –
あなたは本当ですが、私は自分の学習のためにそれを作っていました...まあありがとうございます。しかし、このような必要が生まれるかもしれない状況が起こると思いませんか? – NoviceToDotNet