3

そのようなマルチスカラーテーブル値関数でストアドプロシージャを呼び出す方法はありますか?

注: このクエリは次のエラーを返します。

関数内での副作用演算子「INSERT EXEC」の使用は無効です。

T-SQL コード:

CREATE FUNCTION fnCrSum
(
@ay nvarchar(100), @yil nvarchar(4), @tip nvarchar(25)
)
RETURNS 
@tablo TABLE 
(
    id int,
    ref_num int,
    last_name nvarchar(200),
    grup nvarchar(200),
    analist nvarchar(200),
    durum nvarchar(10),
    start_dt int , 
    end_dt int,
    duration int,
    type nvarchar(10),
    bildirim nvarchar(200)
)
AS
BEGIN
    DECLARE @exec NVARCHAR(250)
    SET @exec = 'exec dbo.spCrSum ''' + @ay + ''', ''' + @yil + ''', ''' +  @tip + ''''
    INSERT INTO @tablo
    exec (@exec)

    RETURN 
END
GO
4

3 に答える 3

2

関数は、データの変更などの副作用を持つことはできません。

ストアド プロシージャが何も変更しない場合でも、SQL コンパイラはそれを想定できないため、許可しません。

なぜこれを関数でラップする必要があるのですか?

于 2012-10-11T13:55:13.207 に答える
0

関数内でストアド プロシージャを実行することはできません。

于 2012-10-11T13:43:58.270 に答える