/****************************************************************************/
/* SYSTEM_ID : GF                                                           */
/* GE54SQL_SET ( FUNCTION )                                                 */
/* Created : 2017/07/31 15:48:52                                            */
/****************************************************************************/

CREATE 
FUNCTION GE54SQL_SET(
	XSYSTEM_ID  IN VARCHAR2 ,
	XLISTID     IN VARCHAR2 ,
	XKBTEXT     IN VARCHAR2  )
RETURN VARCHAR2
/**********************************************************************/
/* 帳票定義マスタ SQL自動作成                                         */
/*  GE54SQL_SET( SYSTEM_ID,LISTID,KBTEXT )                            */
/*                                                                    */
/*	 SYSTEM_ID  IN VARCHAR2           システムID                      */
/*	 LISTID     IN VARCHAR2           帳票ID                          */
/*	 KBTEXT     IN VARCHAR2           テキスト区分(H,F,B)             */
/*                                                                    */
/*	指定された属性を元に、GE52 のカラム情報より GE54 の SQL文を       */
/*  作成します。                                                      */
/*                                                                    */
/**********************************************************************/
IS
    RTN			GE54.BSQL%TYPE;
    CNM			VARCHAR2(1);
--	CRLF		VARCHAR2(2)  := CHR(10) || CHR(13);
	CRLF		VARCHAR2(2)  := CHR(10) ;

	CURSOR CODEC1 IS
		SELECT CLM,START_POS,USE_LENGTH
			FROM	GE52
			WHERE	SYSTEM_ID  = XSYSTEM_ID
			AND		LISTID     = XLISTID
			AND		KBTEXT     = XKBTEXT
			AND		FGUSE      = '1'
			AND		FGJ       IN ( '0','1' )
			ORDER BY SEQ ;

	CODEREC CODEC1%ROWTYPE;

BEGIN
	RTN := 'SELECT' || CRLF ;
	CNM := ' ' ;

	OPEN	CODEC1;

	LOOP
		FETCH CODEC1 INTO CODEREC;
		EXIT WHEN CODEC1%NOTFOUND;

		RTN := RTN || ' ' || CNM || 'CUT(TEXT,' ||
					CODEREC.START_POS || ',' || CODEREC.USE_LENGTH || ') ' ||
					CODEREC.CLM || CRLF ;
		CNM := ',' ;

	END LOOP;
	CLOSE CODEC1;

	/* CNM が、スペースのままであるとき、データが ０件であった。 */
	IF( CNM = ' ' ) THEN
		RTN := '';
	ELSE
		RTN := RTN || ' FROM GE51 WHERE FGJ = ' || '''1''' || CRLF ||
				' AND   SYSTEM_ID = ? ' || CRLF ||
				' AND   YKNO      = ? ' || CRLF ||
				' AND   KBTEXT    = ' || '''' || XKBTEXT || '''' || CRLF ||
				' ORDER BY EDNO' ;
	END IF;

	RETURN RTN;

END GE54SQL_SET;
;
