2

我的功能看起來是這樣的:爲什麼我不能在T-SQL函數的表變量上運行INSERT EXEC?

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 

當我嘗試並執行上面的SQL,我得到以下錯誤:

Invalid use of a side-effecting operator 'INSERT EXEC' within a function.

我想在一個表變量操作的功能不考慮副作用?

+2

我不確定你可以在函數內執行存儲過程。如果我是正確的,那不是插入,它本身就是'exec'。 –

+0

@ZoharPeled是的,我懷疑你可能是對的。 – ProfK

+0

好吧,事實證明我可能是正確的,[因爲這個SO帖子建議](http://stackoverflow.com/questions/6344880/execute-stored-procedure-from-a-function) –

回答

相關問題