Function to automatic obtain the FTP path

   CREATE OR REPLACE FUNCTION APPS.XXFND_FTP_PATH_LKP ( p_type IN VARCHAR2,
						p_suffix IN VARCHAR2  DEFAULT NULL,
						p_ora_dir IN VARCHAR2  DEFAULT NULL
) RETURN VARCHAR2

IS
	l_utl_type		VARCHAR2 (50)	:= '';
	l_utl_prefix		VARCHAR2 (50)	:= '';
	l_utl_middle		VARCHAR2 (50)	:= '';
	l_utl_org_code		VARCHAR2 (50)	:= '';
	l_utl_org_code_resp	VARCHAR2 (50)	:= '';
	--
	l_instance_name		VARCHAR2 (50)	:= '';
	l_final_path		VARCHAR2 (300)	:= '';
	v_chr_inst_emc_moved    VARCHAR2 (10)  ; 	CURSOR c_instance IS
		SELECT lower(instance_name) instance_name
		  FROM v$instance;

BEGIN
	--Retrieve System Profile Option Values--
	l_utl_type				:= FND_PROFILE.VALUE('XXFND_UTL_' || upper(ltrim(rtrim(p_type))));
	l_utl_prefix			:= FND_PROFILE.VALUE('XXFND_UTL_PREFIX');--/apps
	l_utl_middle			:= FND_PROFILE.VALUE('XXFND_UTL_MIDDLE');--/data
	l_utl_org_code			:= FND_PROFILE.VALUE('XXFND_UTL_ORG_CODE');
	l_utl_org_code_resp	:= FND_PROFILE.VALUE('XXFND_UTL_ORG_CODE_RESP');
	--

	--Responsibility-Level Org Code takes priority...  If N/A, Organization-Level Org Code is used--
	IF (l_utl_org_code_resp IS NOT NULL) THEN
		l_utl_org_code := l_utl_org_code_resp;
	END IF;
	--

	--Dynamically retrieve Instance Name--
	FOR c1 IN c_instance
	LOOP
		l_instance_name := c1.instance_name;
	END LOOP;

        /*Addition by Infosys on 12-10-09-EMC Proj*/

        v_chr_inst_emc_moved :=fnd_profile.VALUE ('XXFND_INSTANCE_EMC_MOVED');-- Profile to check whther Instance is EMC Moved

	/*Check whether instance is EMC Moved and generate the FTP path dynamically */
	IF (v_chr_inst_emc_moved = 'Y')
	THEN

	l_final_path := '/' || l_instance_name ||'db'|| l_utl_middle || l_utl_org_code || l_utl_type||p_suffix 
ELSE

        l_final_path := l_utl_prefix || '/' || l_instance_name || l_utl_middle || l_utl_org_code || l_utl_type ;

	--Attach optional suffix portion of path as needed (initial "/" assumed part of suffix supplied)--
	l_final_path := l_final_path || p_suffix;--/apps/11/data/outfile/min

	END IF;
	
	IF UPPER(p_ora_dir) = 'Y'
	THEN
		--l_final_path := 'FTP_'||UPPER(REPLACE(l_utl_org_code,'/',''))||'_'||UPPER(REPLACE(p_type,'/',''))||'_'||UPPER(REPLACE(p_suffix,'/',''));
		BEGIN
			SELECT dd.directory_name
			  INTO l_final_path
			  FROM DBA_DIRECTORIES dd
			 WHERE dd.directory_path = l_final_path
			 	AND rownum = 1;
		EXCEPTION
			WHEN OTHERS
			THEN
				l_final_path := '/' || l_instance_name ||'db'|| l_utl_middle || l_utl_org_code || l_utl_type||p_suffix;
		END;
	END IF;
	RETURN l_final_path;


EXCEPTION
	WHEN OTHERS THEN
		RETURN NULL;


END XXFND_FTP_PATH_LKP;
/

SELECTxxfnd_ftp_path_lkp('INFILE','/maintpo')FROMdual


發佈了11 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章