30

スカラー値関数は、次のように.NETから呼び出すことができます。

SqlCommand cmd = new SqlCommand("testFunction", sqlConn); //testFunction is scalar
cmd.CommandType = CommandType.StoredProcedure;  
cmd.Parameters.Add("retVal", SqlDbType.Int);
cmd.Parameters["retVal"].Direction = ParameterDirection.ReturnValue;
cmd.ExecuteScalar();
int aFunctionResult = (int)cmd.Parameters["retVal"].Value;

また、テーブル値関数も同様の方法で呼び出すことができることも知っています。たとえば、次のようになります。

String query = "select * from testFunction(param1,...)"; //testFunction is table-valued
SqlCommand cmd = new SqlCommand(query, sqlConn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(tbl);

私の質問は、スカラー値関数のように、テーブル値関数をストアドプロシージャとして呼び出すことができるかどうかです。(たとえば、テーブル値関数が呼び出され、ReturnValueパラメーターを介して返されたテーブルを取得する最初のコードスニペットを複製します)。

4

1 に答える 1

19

いいえ、それらを選択する必要があるためです。ただし、ストアドプロシージャラッパーを作成することはできます。これにより、テーブル関数を持つという点が損なわれる可能性があります。

于 2008-08-12T15:53:26.193 に答える