[英]How to pass date parameter for a DB2 Table valued function
我是 DB2 的新手,真的希望你们中的一个可以帮助我。 我无法使用 DATE 类型的参数创建一个表值 function。
价值为 function 的表仅适用于 AddressCode。
我正在使用 DBeaver 在 AS400 上执行脚本。
代码:
ALTER FUNCTION ABELIBLE.TVFBOEGETSHIPMENTS (STARTDATE DATE, ENDDATE DATE, ADDRESSCODE CHAR(9))
RETURNS TABLE (ID INT, JOBNUMBER CHAR(9), CUSTOMERREFERENCE CHAR(18),
CONSIGNEENAME CHAR(30), CREATEDDATE DATE, AIRPORTOFORIGIN CHAR(3), AIRPORTOFARRIVAL CHAR(3),
AIRPORTOFDESTINATION CHAR(3), COUNTRYOFDESTINATION CHAR(3), ADDRESSCODE CHAR(9), CONSIGNMENTNUMBER CHAR(25))
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
RETURN
SELECT
ROW_NUMBER() OVER(ORDER BY EMJOBN DESC),
A.EMJOBN,
A.EMCREF,
A.EMOSNM,
DATE(TIMESTAMP_FORMAT(DIGITS(A.EMCRTD), 'DDMMYY')),
A.EMAOFO,
A.EMAOFA,
A.EMAOFD,
A.EMCOFD,
A.EMUKCD,
A.EMRPRT
FROM DTALIBLE.EMASTER A WHERE A.EMPSFT = 'Y' AND A.EMUKCD = ADDRESSCODE AND
DATE(TIMESTAMP_FORMAT(DIGITS(A.EMCRTD), 'DDMMYY')) >= STARTDATE AND DATE(TIMESTAMP_FORMAT(DIGITS(A.EMCRTD), 'DDMMYY')) <= ENDDATE
我想您正在为 I 使用 DB2,因为关键字 CCSID 显示在错误弹出窗口中
导致问题的不是图像中突出显示的 DATE 关键字,而是参数中的 DATE 关键字
你写了
ALTER FUNCTION ABELIBLE.TVFBOEGETSHIPMENTS (STARTDATE DATE, ENDDATE DATE, ADDRESSCODE CHAR(9))
RETURNS TABLE
你必须写
ALTER FUNCTION ABELIBLE.TVFBOEGETSHIPMENTS
/* parameter type without name that indicate the signature */
(DATE, DATE, CHAR(9))
REPLACE RESTRICT
/*redefine parameters */
(STARTDATE DATE, ENDDATE DATE, ADDRESSCODE CHAR(9))
RETURNS TABLE ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.