4

SQLで動的な名前の関数を呼び出すことは可能ですか?

例えば:

SELECT functionid, (SELECT results FROM dbo.Function_*functionid*) AS results
FROM List_of_Functions

これにより、テーブルList_of_Functionsの行ごとに異なる関数が呼び出されます。

それとも私はこれについてすべて間違っていますか?

4

3 に答える 3

3

次のような 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
于 2012-05-11T19:48:11.597 に答える
2

SQLで動的な名前で関数を呼び出すことは可能ですか?

純粋な SQL ではありません。

動的 SQL を使用してこれを実現できますが、特にSQL インジェクションのリスクがないわけではありません。

このテーマを包括的に扱うには、Erland SommarskogによるThe Curse and Blessings of Dynamic SQL を読むことをお勧めします。

于 2012-05-11T19:13:31.270 に答える