Wenn ich in einer SQL Procedure eine "GLOBAL TEMPORARY TABLE" definiere und die definition eine Variable enthält bekomme ich einen SQL0312 RC9 Fehler.
Geht das gar nicht oder mache ich in der definition etwas falsch?
oder gibts eine umgehung?
Hier als Beispiel eine SQL-Procedur (es geht um die variable BASEDIR):
Code:
CREATE OR REPLACE PROCEDURE TEST.CHKIFSDIR ( )
LANGUAGE SQL
SPECIFIC TEST.CHKIFSDIR
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
CONCURRENT ACCESS RESOLUTION DEFAULT
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DECRESULT = (31, 31, 00) ,
DFTRDBCOL = *NONE ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
BEGIN
DECLARE BASEDIR VARCHAR ( 70 ) ;
SET BASEDIR = '/home/Test/' ;
SET BASEDIR = TRIM(BASEDIR);
DECLARE GLOBAL TEMPORARY TABLE GENIFS0 AS
(
SELECT
SUBSTR(TRIM(PATH_NAME), LOCATE_IN_STRING(TRIM(PATH_NAME),'/',-1) + 1, LENGTH(TRIM(PATH_NAME))) AS GENDIR, PATH_NAME
FROM TABLE (QSYS2.IFS_OBJECT_STATISTICS(START_PATH_NAME => BASEDIR, -- here is the error, variable is not allowed
SUBTREE_DIRECTORIES => 'YES',
OBJECT_TYPE_LIST => '*ALLDIR',
IGNORE_ERRORS => 'YES' )) t
) WITH DATA WITH REPLACE
;
END;
Bookmarks