【问题标题】:Reading a Stored Procedure from Table Value Item从表值项中读取存储过程
【发布时间】:2015-11-25 10:43:16
【问题描述】:

我有一个名为“GetSPTst”的存储过程,我从表值函数中调用它。在这个函数中我返回一个表,下面是我的 SQL 代码。我收到一个错误“

消息 443,级别 16,状态 14,过程 TstFunction 行 15。无效 在函数中使用副作用运算符 'INSERT EXEC'。"

你能帮忙吗?

IF EXISTS (SELECT *
       FROM   sys.objects
       WHERE  object_id = OBJECT_ID(N'[dbo].[TstFunction]
               AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' ))
DROP FUNCTION [dbo].[TstFunction]
GO 

CREATE FUNCTION [dbo].[TstFunction]( @AsAtDate datetime, @DateFrom datetime, @DateTo datetime, @Ledger char(1), @CodeFrom varchar(6),
                                           @CodeTo varchar(6), @CurrencyFrom char(3), @CurrencyTo char(3))

RETURNS  @FunctionResultTableVariable TABLE (Currency char(3), Code varchar(6), BalOutst int)
AS
BEGIN

            insert @FunctionResultTableVariable
             EXECUTE  [dbo].[GetSPTst]                          
               @AsAtDate                                    
              ,@DateFrom                                    
              ,@DateTo                                  
              ,@Ledger                                  
              ,@CodeFrom
              ,@CodeTo
              ,@CurrencyFrom
              ,@CurrencyTo;


   return;
END
GO

【问题讨论】:

  • SQL Server 内部函数中,您根本无法调用另一个存储过程/函数。
  • 标记使用的 dbms,这是一个产品特定的问题。
  • 你不能存储过程。在 sql server 的函数内部

标签: sql sql-server database stored-procedures table-valued-parameters


【解决方案1】:

不可能从您创建的表值函数中执行存储过程,但是您可以将存储过程更改为表值函数。

【讨论】:

  • 我无法将存储过程更改为表值函数,因为它已在我的项目中使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
相关资源
最近更新 更多