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')))' –