Return 变量使用 OPENQUERY

Return variable using OPENQUERY

我正在尝试创建一个简单的函数,它从 ORACLE 数据库中读取 table 和 return 序列号。我想直接 return 它或者将值存储在 @cwpSeq 和 return 里面给调用程序。

现在我收到错误:

RETURN statements in scalar valued functions must include an argument.

谁能帮帮我。

create  function dbo.get_cwpSeq_from_oracle(@COIL nvarchar(100) )
returns int as

begin

    DECLARE @cwpSeq int, @SQL nvarchar(1000);
    set @SQL = N'select * from openquery(DEV, 'select cwp_seq from apps.custom_wip_pieces where lot_number = ''' + @COIL + '')';
    
    return execute sp_executesql @SQL;
end;

如前所述,在这种情况下,您应该使用带有输出参数的过程而不是函数。如果您想在 Oracle 链接服务器端完全执行查询,然后 return 一些值,我建议使用动态如下:

Create Or Alter Procedure dbo.get_cwpSeq
    @COIL nvarchar(100),
    @cwp_seq Int Output
As

Declare @QueryText nVarChar(max)

Select @QueryText = 'Select @cwp_seq=cwp_seq 
                     From Openquery(DEV, 
                     ''Select cwp_seq 
                       From apps.custom_wip_pieces 
                       Where lot_number= ''''' + @COIL + ''''''') As Ora'; 
Execute sp_executesql @QueryText, N'@COIL nvarchar(100), @cwp_seq Int Output', @COIL = @COIL, @cwp_seq = @cwp_seq Output

据我了解你的情况: 链接服务器是“DEV”,table 的所有者是“apps”。