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”。
我正在尝试创建一个简单的函数,它从 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”。