Pro*_*ofK 2 t-sql sql-server sql-function table-variable sql-server-2012
我的功能看起来像这样:
CREATE FUNCTION fn_FileSys_DirExists(@dirName AS nvarchar(260))
RETURNS bit
AS
BEGIN
DECLARE @dirExists int
DECLARE @fileResults TABLE
(
file_exists int,
file_is_a_directory int,
parent_directory_exists int
)
INSERT @fileResults (file_exists, file_is_a_directory, parent_directory_exists)
EXEC master.dbo.xp_fileexist @dirName
SELECT @dirExists = file_is_a_directory FROM @fileResults
RETURN @dirExists
END
Run Code Online (Sandbox Code Playgroud)
当我尝试执行上面的SQL时,我收到以下错误:
在函数中无效使用副作用运算符'INSERT EXEC'.
我认为函数中的表变量的操作不被视为副作用操作?
INSERT ... EXEC
是一个副作用操作符,因为它最终在幕后创建一个临时表.
这是在此dbfiddle的执行计划中显示的参数表扫描的后面
有关详细信息,请参阅INSERT EXEC的隐藏成本.
你最好写一个CLR函数来做到这一点.
归档时间: |
|
查看次数: |
1409 次 |
最近记录: |