1
我有一個函數返回一組itemcodes
。其結果是正確的,但是當我把它在存儲過程中不顯示任何東西:SQL SERVER CAL函數在IN語句中
declare @itemgroupCode int
set @itemgroupCode=118
declare @todate datetime
set @todate='15.april.15'
declare @Group nvarchar(Max)
set @Group=(SELECT [dbo].[CurrProduction] (118,'15.APRIL.2015'))
select @Group
SELECT *
FROM (
SELECT
o.ItemCode as [Item],tm.ItemName as Dscription,o.Warehouse as Wr,obtn.LotNumber,
itl1.quantity as qty ,tm.U_Reusb,@Group as Grp
from OINM o inner join OITL on OITL.DocType = o .TransType and OITL.DocNum = o.BASE_REF and OITL.DocLine= o .DocLineNum and OITL .LocCode = o.Warehouse and o .ItemCode = OITL.ItemCode
inner join ITL1 on ITL1.LogEntry = OITL.LogEntry and ITL1.ItemCode=OITL.ItemCode
inner join OITM tm on tm.ItemCode = ITL1.ItemCode
inner join OITB on tm .ItmsGrpCod = OITB .ItmsGrpCod
INNER JOIN OWHS AS OH ON o.Warehouse=OH.WhsCode
inner join OBTN on OBTN.SysNumber = ITL1.SysNumber and OBTN.ItemCode = ITL1.ItemCode and tm.ManBtchNum = 'Y'
WHERE --tm.ItmsGrpCod=108 and
tm.ItemCode in (@Group)
and o.DocDate<[email protected]) as s
PIVOT
(
SUM(qty)
FOR Wr IN (
[DIS],[G&I],[GD-001],[GD-002],[GD-003],[GD-004],
[GD-005],[GD-006],[GD-007],[GD-008],[GD-009],[GD-010],
[GD-011],[GD-012],[GD-013],[GD-014],[GD-015],[GD-016],[GD-017],[GD-018],
[GD-019],[GD-020],[GD-021],[GD-022],[GD-023],[GD-024],[GD-025],[GD-026],
[GD-027],[GD-028],[GD-029],[GD-030],[GD-031],[GD-032],[GD-033],[GD-034],[GD-035],
[KHI AB],[KHI MM],[Loan],[LUB],[Main],[PCG - M1],[PCG - M2],
[PHS],[PMG],[PRO],[REJ],[REP],[REP-V],[Selling],[SKP]
)
)AS PVT
在函數返回時,我在IN CLAUSE
粘貼以下它給了我正確的結果,但是當我傳遞的結果函數調用,它不會顯示任何東西
函數返回:
'FYCT-00063','FYCM-00016','FYCM-00064','FYCF-00018','FYCM-00021','FYOG-00016','FYCM-00004','FYCM-00031','FYCM-00042' function code is following.
**
ALTER FUNCTION [dbo].[CurrProduction]
(
@unit varchar(10), @date datetime
)
RETURNS Varchar(Max)
AS
BEGIN
-- Declare the return variable here
DECLARE @ResultVar varchar(Max)
SELECT DISTINCT @ResultVar='''' + REPLACE(STUFF((
SELECT ',',+CAST(OWOR.ItemCode AS VARCHAR(10)) [text()]
FROM OWOR
where [email protected] AND OWOR.U_Unit=CASE
when @unit=108 then 'Unit No1'
when @unit=118 then 'Unit No 2'
when @unit=119 then 'Unit No 3' END
AND OWOR.Status!='C'
FOR XML PATH('') , TYPE)
.value('.','NVARCHAR(MAX)'),1,1,' '),',',''',''')+''''
-- Return the result of the function
RETURN @RESULTVAR
END
**
什麼是函數的類型?這個函數返回什麼? –
@GiorgiNakeuri這是未定義的函數,它返回varchar –
它應該是內聯表值函數並返回結果集,那麼你可以像'where where itemcode in(select * from [dbo]。[CurrProduction](118,'15 .APRIL .2015')))' –