Update Function CYMD2DATE
This commit is contained in:
@@ -1 +1,52 @@
|
||||
簀紂ラチ翳@リ粨<EFBFBD>kリ粨糘k粨籏ルヨテk粨篷ツヤチトヤkリ翡ヤラ@^@
|
||||
SET PATH "QSYS","QSYS2","SYSPROC","SYSIBMADM","QTEMP" ;
|
||||
|
||||
CREATE OR REPLACE FUNCTION CISTOOLS.CYMD2DATE (
|
||||
CYMD_DATE NUMERIC(7, 0) DEFAULT 0 )
|
||||
RETURNS DATE
|
||||
LANGUAGE SQL
|
||||
SPECIFIC CISTOOLS.CYMD2DATE
|
||||
NOT DETERMINISTIC
|
||||
MODIFIES SQL DATA
|
||||
CALLED ON NULL INPUT
|
||||
SET OPTION ALWBLK = *ALLREAD ,
|
||||
ALWCPYDTA = *OPTIMIZE ,
|
||||
COMMIT = *NONE ,
|
||||
DBGVIEW = *SOURCE ,
|
||||
DECRESULT = (31, 31, 00) ,
|
||||
DFTRDBCOL = QTEMP ,
|
||||
DYNDFTCOL = *NO ,
|
||||
DYNUSRPRF = *USER ,
|
||||
SRTSEQ = *HEX
|
||||
BEGIN
|
||||
DECLARE CHAR_DATE CHAR ( 8 ) ;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION RETURN NULL ;
|
||||
SET CHAR_DATE =
|
||||
CASE
|
||||
WHEN
|
||||
LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 1 ) = '0'
|
||||
THEN '19' || RIGHT ( LPAD ( CYMD_DATE , 7 , '0' ) , 6 )
|
||||
WHEN
|
||||
LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 2 ) >= '1'
|
||||
THEN
|
||||
( INT ( LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 1 ) ) + 19 ) ||
|
||||
RIGHT ( LPAD ( CYMD_DATE , 7 , '0' ) , 6 )
|
||||
END ;
|
||||
-- TO_DATE will validate the date and throw exception if invalid
|
||||
-- Exception handler will catch and return NULL
|
||||
RETURN TO_DATE ( CHAR_DATE , 'YYYYMMDD' ) ;
|
||||
END ;
|
||||
|
||||
COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||
( CYMD_DATE IS 'CYMD Date Format' ) ;
|
||||
|
||||
LABEL ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||
IS 'Cymd To Date' ;
|
||||
|
||||
GRANT ALTER , EXECUTE
|
||||
ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||
TO AMAPICS WITH GRANT OPTION ;
|
||||
|
||||
GRANT EXECUTE
|
||||
ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||
TO PUBLIC ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user