Sql server 在函数中选择LinkedServer
我正试图在存储过程中使用Sql server 在函数中选择LinkedServer,sql-server,Sql Server,我正试图在存储过程中使用LinkedServer选择一个函数,但出现了一个错误 错误:不允许远程表值函数调用 因此,我所做的是创建以下代码: DECLARE @YearOF INT = 2019 DECLARE @MonthOF INT = 12 EXEC VM_DB_FMIS.fmis.dbo.sp_executesql N'SELECT * FROM fn_some_function(@YearOF_Q,@MonthOF_Q)' ,N'@YearOF_Q INT, @MonthOF_Q
LinkedServer
选择一个函数,但出现了一个错误
错误:不允许远程表值函数调用
因此,我所做的是创建以下代码:
DECLARE @YearOF INT = 2019
DECLARE @MonthOF INT = 12
EXEC VM_DB_FMIS.fmis.dbo.sp_executesql N'SELECT * FROM
fn_some_function(@YearOF_Q,@MonthOF_Q)'
,N'@YearOF_Q INT, @MonthOF_Q INT',@YearOF,@MonthOF
但如果我这样做,那么我需要更新所有使用上述函数的现有存储过程。因此,我尝试用相同的名称创建自己的函数,以产生相同的结果
CREATE function [dbo].[fn_some_function] (
@YearOF INT,
@MonthOF INT
)
RETURNS @DataTable TABLE
(
obrno VARCHAR(50),
YearOF INT
)
BEGIN
DECLARE @t1 TABLE(obrno VARCHAR(50), YearOF INT)
INSERT INTO @t1
EXEC VM_DB_FMIS.fmis.dbo.sp_executesql N'SELECT * FROM
fn_some_function(@YearOF_Q,@MonthOF_Q)'
,N'@YearOF_Q INT, @MonthOF_Q INT',@YearOF,@MonthOF
INSERT INTO @DataTable
SELECT * FROM @t1
RETURN
END
但现在我得到了这个错误
在函数中无效使用副作用运算符“INSERT EXEC”
那么,还有其他解决办法吗 使用
存储过程
instead@Squirrel如果我这样做,那么我会得到一个错误“INSERT EXEC语句无法嵌套”。@FrostTypinky这可能是因为您正在调用的存储过程中也有一个INSERT
语句。我相信,对于在存储过程中插入语句,您最多可以使用2个深度