Вызвать функцию T-SQL из Genexus - PullRequest
0 голосов
/ 11 февраля 2019

Я определил функцию с параметрами в T-SQL в SQL Server 2012. Теперь я хочу вызвать эту функцию из Genexus, передавая указанные параметры.Возможно ли это?

DBRet позволяет подключать только таблицы и представления из КБ.Есть ли другой способ сделать эту работу?

Функция

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 Código: 1001 Rango de fechas: 01/01/2018 al 31/12/2019

1 Ответ

0 голосов
/ 11 февраля 2019

Вы не можете вызвать такую ​​функцию из GeneXus.Вы могли бы вызвать хранимую процедуру , но она не может вернуть набор записей, только скалярные значения.

Я думаю, что ваш лучший вариант здесь - это использовать Динамические транзакции .Динамическая транзакция похожа на любую другую обычную транзакцию, но у нее есть связанный провайдер данных, и в итоге генерируется view в SQL, который может иметь параметры.

Допустим, вы создали динамическую транзакцию, а затем вы можете использовать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
...