从 Genexus 调用 T-SQL 函数

Invoke T-SQL function from Genexus

我在 SQL Server 2012 中的 T-SQL 中定义了一个带参数的函数。现在我想通过传递引用的参数从 Genexus 调用该函数。这可能吗?

DBRet 只允许从 KB 连接表和视图。还有其他方法可以做到这一点吗?

函数

CREATE FUNCTION [dbo].[mayor_rubro_codigo](@rubroId char(12),@codigoId char(12), @fechaIni date,@fechaFin date)

RETURNS TABLE 
AS
RETURN 
(
    select fecha,rubro,codigo,refe,iif(dbcr='D',impmn+impme,0) DEBE,iif(dbcr='H',impmn+impme,0) HABER  from mayor where rubro=@rubroId and codigo=@codigoId and fecha>=@fechaIni and fecha<=@fechaFin and impmn+impme>0
)

查询

select * from mayor_rubro_codigo('101101','1001',{d '2018-01-01'},{d '2019-12-31'})

参数

鲁布罗:101101 代码:1001 Rango de fechas: 01/01/2018 到 31/12/2019

您不能从 GeneXus 调用类似的函数。你 could call a stored procedure,但它不能 return 记录集,只有标量值。

我认为您最好的选择是使用 Dynamic Transactions。动态事务与任何其他普通事务一样,但它有一个关联的数据提供者,并最终在 SQL 中生成一个可以有参数的 view

假设您创建了动态交易,那么您可以使用 for each 命令,就像您通常对任何其他交易所做的那样:

for each mayor_rubro_codigo
    where rubroId = '101101'
    where codigoId = '1001'
    where fechaIni = #2018-01-01#
    where fechaFin = #2019-12-31#

    // your processing code here
endfor