繁体   English   中英

如何为 DB2 表值 function 传递日期参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM