【问题标题】:Call a stored procedure in multi scalar table-valued function?在多标量表值函数中调用存储过程?
【发布时间】:2012-10-11 12:56:06
【问题描述】:

有没有办法像那样在多标量表值函数中调用存储过程?

注意:此查询返回错误:

在函数中无效使用副作用运算符“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

【问题讨论】:

    标签: sql-server function stored-procedures


    【解决方案1】:

    函数不能有副作用,即更改数据。

    即使你的存储过程没有改变任何东西,SQL 编译器也不能假设,所以它就是不允许的。

    为什么需要将它包装在一个函数中?

    【讨论】:

    • 因为,Business Objects Designer 端存在技术问题。
    【解决方案2】:

    您不能在函数中执行存储过程。

    【讨论】:

      【解决方案3】:

      我解决了这个问题。我编写了一个表值函数,包括可执行查询、返回表并准备了一个存储过程来调用该函数并传递参数。它对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        • 2011-09-14
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多