есть ли способ выполнить что-то вроде следующего:
CREATE FUNCTION GetQtyFromID
(
@oricod varchar(15),
@ccocod varchar(15),
@ocmnum int,
@oinnum int,
@acmnum int,
@acttip char(2),
@unisim varchar(15)
)
AS
RETURNS DECIMAL(18,8)
BEGIN
DECLARE @Result decimal(18,8)
DECLARE @SQLString nvarchar(max);
DECLARE @ParmDefinition nvarchar(max);
--I need to execute a query stored in a cell which returns the calculated qty.
--i.e of AcuQry: select @cant = sum(smt) from table where oricod = @oricod and ...
SELECT @SQLString = AcuQry
FROM OinActUni
WHERE (OriCod = @oricod) AND (ActTipCod = @acttip) AND (UniSim = @unisim) AND (AcuEst > 0)
SET @ParmDefinition = N'
@oricod varchar(15),
@ccocod varchar(15),
@ocmnum int,
@oinnum int,
@acmnum int,
@cant decimal(18,8) output';
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@oricod = @oricod,
@ccocod = @ccocod,
@ocmnum = @ocmnum,
@oinnum = @oinnum,
@acmnum = @acmnum,
@cant = @result OUTPUT;
RETURN @Result
END
Проблема с этим подходом состоит в том, что запрещено выполнять sp_excutesql в функции ...
Что янужно сделать что-то вроде:
select id, getQtyFromID(id) as qty
from table
Основная идея - выполнить запрос, хранящийся в ячейке таблицы, потому что количество чего-либо зависит от его единицы.единица может быть днями или метрическими тоннами, поэтому между единицами нет никакой связи, поэтому для каждой единицы необходим специальный запрос.