我编写了一个表函数,用于在单个输入参数中传递多个值。我在简历中也一样。工作正常。 但是,当我想无条件查看数据时会出现问题。即,当我传递“ *”作为输入时,它将引发错误。 在这种情况下,我想查看所有数据(有时)并且有时需要使用过滤器,该怎么办。 我正在尝试处理相同的问题。但这给出了以下错误。当我从计算视图中获取原始数据时。
错误: SAP DBTech JDBC:[2048]:列存储错误:搜索表错误:[2620]“ HADMIN”。“ RA.Test.Pramhamesh :: PH_MULTIPLE_INPUT”:第22行第1行(在pos 589处):[130](范围2 )InternalFatal异常:索引HADMIN:_SYS_SS_CE_60839900_vers1_lang6_type2__2_CS_1_3_RET的表配置无效
代码:
FUNCTION "HADMIN"."RA.Test.Prathamesh::PH_MULTIPLE_INPUT" (IN IP_FORMAT_CD NVARCHAR(3))
RETURNS TABLE (STORE_NO NVARCHAR(10), FORMAT_CD NVARCHAR(3), SALE_QTY DECIMAL(10,3))
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER AS
BEGIN
BEGIN
vfact = select A.STORE_NO,A.FORMAT_CD,SALE_QTY
from HADMIN.S_SITE_MASTER A
INNER JOIN HADMIN.A_ITT_ITEM_SALES B
ON A.STORE_NO = B.STORE_NO
WHERE
B.TRANS_DATE BETWEEN ADD_MONTHS(CURRENT_DATE,-1) AND CURRENT_DATE;
IF ( :IP_FORMAT_CD = '*' )
THEN
var_out = CE_PROJECTION(:vfact,
["STORE_NO","FORMAT_CD","SALE_QTY"],
'IN("FORMAT_CD",$$IP_FORMAT_CD$$)');
ELSE
var_out = CE_PROJECTION(:vfact,
["STORE_NO","FORMAT_CD","SALE_QTY"],
'IN("FORMAT_CD",$$IP_FORMAT_CD$$)');
END IF;
END;
RETURN
SELECT * FROM :var_out;
END;
答案 0 :(得分:0)
请勿使用已弃用的CE_
函数!
对于动态过滤,请使用APPLY_FILTER()
函数。
该函数有充分的文档记录,我什至在此处甚至提供了几个示例,因此我现在不再重复。