有完成類似如下的任何方式:動態SQL和功能
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
的主要思想是,以執行存儲在一個表格單元格的查詢,這是因爲事物的數量取決於它的設備上。單位可以是幾天,也可以是公噸,所以單位之間沒有關係,因此需要對每個單位進行具體查詢。
爲什麼您將查詢存儲在列中,而不是使用存儲過程?無法保證運行動態SQL的帳戶對錶具有選擇權限,並且在查詢運行之前您不會知道問題。 – 2010-06-08 16:33:25
@OMG。我已經添加了一些信息,請閱讀並告訴我您的想法。謝謝。 – Unlimited071 2010-06-08 16:40:18