SQLで動的な名前の関数を呼び出すことは可能ですか?
例えば:
SELECT functionid, (SELECT results FROM dbo.Function_*functionid*) AS results
FROM List_of_Functions
これにより、テーブルList_of_Functionsの行ごとに異なる関数が呼び出されます。
それとも私はこれについてすべて間違っていますか?
SQLで動的な名前の関数を呼び出すことは可能ですか?
例えば:
SELECT functionid, (SELECT results FROM dbo.Function_*functionid*) AS results
FROM List_of_Functions
これにより、テーブルList_of_Functionsの行ごとに異なる関数が呼び出されます。
それとも私はこれについてすべて間違っていますか?
次のような SQL ステートメントを作成する (入力するか、テーブルに基づいて動的に作成する) 必要があります。
SELECT
functionid
,CASE functionid
WHEN 1 THEN dbo.Function_1()
WHEN 2 THEN dbo.Function_2()
WHEN 3 THEN dbo.Function_3()
END AS results
FROM List_of_Functions
これらすべての関数を作成する代わりに、1 つの関数を作成し、その関数が処理を区別するために使用できる値を渡すほうがよいのではないでしょうか? お気に入り:
SELECT
functionid
,dbo.Function(functionid) AS results
FROM List_of_Functions_Parameters
SQLで動的な名前で関数を呼び出すことは可能ですか?
純粋な SQL ではありません。
動的 SQL を使用してこれを実現できますが、特にSQL インジェクションのリスクがないわけではありません。
このテーマを包括的に扱うには、Erland SommarskogによるThe Curse and Blessings of Dynamic SQL を読むことをお勧めします。