【发布时间】:2017-08-06 07:09:54
【问题描述】:
我在 SQL Server 2016 中创建了存储过程和用户定义的表值函数。我能够成功编译过程和函数。
过程名称:getAgentLogActivity
函数名称:sp_agent_log_activity
函数正在调用过程 getAgentLogActivity 以及 Exec sp_executesql。因此,当我尝试在函数的选择查询下方运行时,我得到一个错误。
错误:只有函数和一些扩展存储过程可以 从函数中执行。
SELECT * FROM [dbo].[sp_agent_log_activity]
('2017-02-01 00:00:00','2017-02-01 23:59:59',0,'','','','')
存储过程和函数的完整代码可以在下面的位置找到。
Stored Procedure and User Define Table Valued Function
为了提供代码的背景信息,它是来自 Informix 中 Cisco UCCX 数据库的代码。我已将其转换为 SQL Server。
如果有任何解决该错误的方法,请告诉我。
【问题讨论】:
-
没有人会从 github 下载你的代码。但是你不能在函数中做你想做的事情。您可以在存储过程中执行此操作,但函数不允许调用过程和执行动态 sql。
-
@SeanLange 说了什么。另外,请查看已经提出(并已回答)的问题:stackoverflow.com/questions/6344880/…
-
好吧,我不是要求任何人下载代码。只是它是一个非常大的 100 行代码,用于每个过程和函数,所以我把它放在那里。
-
你真的需要用户定义的函数吗?你能在存储过程中做你想做的事吗?
-
由于变通办法是不言而喻的,您能否集中您的问题来解释您考虑过哪些明显的变通办法,以及您为什么拒绝它们?
标签: sql-server stored-procedures user-defined-functions table-valued-parameters