troubleshooting Question

pl/sql script error when launche via ksh

Avatar of vishal_neo
vishal_neo asked on
Oracle DatabaseShell ScriptingSQL
7 Comments1 Solution948 ViewsLast Modified:
Hi experts,

when i launch the script an an aix machine, i got some errors:
test.sql[2]: --:  not found.
test.sql[3]: --:  not found.
test.sql[62]: tracefile:  not found.
test.sql[64]: VIDE:  not found.
test.sql[65]: 0403-057 Syntax error at line 65 : `(' is not expected.

when i launch the same script with some modification (like hard-code &1 and &2 with relevant values, the script works)

so any guess?
thx
---------------------------------------------------------------------------------------------------------
----Procedure extraction_parc_nrahd.sql
----Réalise l'extraction des éléments de parc correspondants aux critères passés en paramètres
----param1 : nom du fichier csv pour le stockage des résultats
----param2 : id_user_req
---------------------------------------------------------------------------------------------------------
 
DECLARE
 
---------------------------------------------------------------------------------------------------------
----Variables Globales
---------------------------------------------------------------------------------------------------------
 TYPE REC_EXTRACT IS RECORD (
	support varchar2(64),
	code_op varchar2(10),
	libelle_op varchar2(30),
	code_offre varchar2(20),
	nom_offre varchar2(50),
	idExterne varchar2(20),
	
	
	----Composante Portabilité
	code_op_interconnexion varchar2(10),
	libelle_op_interconnexion varchar2(30),
	idExterne_Porta varchar2(20),
	zobpq_Porta varchar2(5),
	
	----Composante GTR
	idParc_GTR  varchar2(9),
	idExterne_GTR varchar2(20),
	code_offre_GTR varchar2(20),
	nom_offre_GTR varchar2(80),
	support_GTR varchar2(64),
	date_debut_GTR varchar2(32),
	date_fin_GTR varchar2(32),
	
	--cplt
	nra_deg varchar2(32),
	insee_deg varchar2(32),
	nra_adsl varchar2(32),
	insee_adsl varchar2(12)
 
 );
 TYPE T_REC_EXTRACT IS TABLE of REC_EXTRACT INDEX BY PLS_INTEGER;
 TAB_RE T_REC_EXTRACT;
 
 TYPE ParcElemType IS REF CURSOR;
 parcElem ParcElemType;
 
 clauseSelect varchar2(4000);
 clauseWhere varchar2(4000);
 clauseFrom varchar2(4000);
 clauseOrder varchar2(4000);
 TNAME varchar2(255);
 
 nomFichier varchar2(100);
 
 nbRows NATURAL := 1000;
 i BINARY_INTEGER := 0;
 
 -- Identifiant de fichier d'extraction
 tracefile UTL_FILE.FILE_TYPE;
 
  VIDE  INTEGER;
  NRA   varchar2(3);
  INSEE varchar2(5);
 
---------------------------------------------------------------------------------------------------------
-- Fonctions et Procedures
---------------------------------------------------------------------------------------------------------
 
------------- verifyClose
-- Ferme le curseur et le fichier de trace si ils sont ouverts
procedure verifyClose IS
begin
	if (parcElem%ISOPEN) then CLOSE parcElem; end if;
	VI_FILE.FFLUSH(tracefile);
	VI_FILE.FCLOSE(tracefile);
end verifyClose;
 
BEGIN
  DBMS_OUTPUT.ENABLE(800000);
  
  nomFichier := reqAsynchrone.getNomFichier('&2');
  	
  -- Creation alias vers le répertoire du fichier à mapper.
  BEGIN
		--EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DEPOT_DIR_NRAHD AS ''@ASYNCHRONE_REP_DEPOT_FICHIER@'' ';
		EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DEPOT_DIR_NRAHD AS ''/data/flf/vigvig/files/ext_nra/entree/'' ';
		
	EXCEPTION WHEN OTHERS THEN
	  DBMS_OUTPUT.PUT_LINE('INFO - Creation alias DEPOT_DIR_NRAHD impossible : ');	
	  DBMS_OUTPUT.PUT_LINE(dbms_utility.format_error_stack);
	END;
	-- Définition du nom de la table temporaire à partir du digest du nom du fichier en entrée
	TNAME := 'EXT_' || LTRIM(TO_CHAR(DBMS_UTILITY.GET_HASH_VALUE(UPPER(REPLACE(substr(nomFichier,instr(nomFichier,'/',-1)),'.','')),1000000000,POWER(2,30)),RPAD('X',29,'X')||'X'));
	-- Suppression préventive de la table virtuelle
	BEGIN
	  EXECUTE IMMEDIATE 'DROP TABLE ' || TNAME || ' ';
	EXCEPTION WHEN OTHERS THEN
	  NULL;
	END;
	-- Creation de la table virtuelle spécifique au nom du fichier.
	EXECUTE IMMEDIATE 'CREATE TABLE ' || TNAME ||
 	'(SUPPORT VARCHAR2(64)) ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY DEPOT_DIR_NRAHD ACCESS PARAMETERS '||
  '( records delimited by newline nobadfile nodiscardfile nologfile fields missing field values are null (support char(10)) ) LOCATION ( '''||nomFichier||''' )) PARALLEL CACHE REJECT LIMIT UNLIMITED';
 
     clauseSelect := 'SELECT NRAHD.SUPPORT,P.CODE_OPERATEUR,P.LIBELLE_OPERATEUR,P.CODE_OFFRE_PARC,P.NOM_OFFRE,P.ID_EXTERNE,'||
                    'P_PORT.CODE_OPERATEUR,P_PORT.LIBELLE_OPERATEUR,P_PORT.ID_EXTERNE,P_PORT.Z0BPQ,'||
                    'P_GTR.ID_PARC,P_GTR.ID_EXTERNE,P_GTR.CODE_OFFRE_PARC,P_GTR.NOM_OFFRE,P_GTR.SUPPORT_FT,P_GTR.DATE_DEBUT,P_GTR.DATE_FIN,'||
                    'P_GTR.NRA_deg,P_GTR.INSEE_deg,P_GTR.NRA_dsl,P_GTR.INSEE_dsl ';
  
  
     clauseFrom := 'FROM (SELECT O.CODE_OPERATEUR,O.LIBELLE_OPERATEUR,OP.CODE_OFFRE_PARC,OP.NOM_OFFRE,PA.ID_EXTERNE,PA.SUPPORT_FT '||
                'FROM PARC@ASYNCHRONE_DBLINK_PARC@ PA, OFFRE_PARC@ASYNCHRONE_DBLINK_PARC@ OP, OPERATEUR@ASYNCHRONE_DBLINK_PARC@ O WHERE '||
                'PA.ID_OFFRE_PARC = OP.ID_OFFRE_PARC(+) AND PA.ID_OPERATEUR = O.ID_OPERATEUR(+) AND PA.DATE_FIN IS NULL ) P, '||
          
          
                '(SELECT O.CODE_OPERATEUR,O.LIBELLE_OPERATEUR,PA.ID_EXTERNE,CPP.Z0BPQ,PA.ID_EXTERNE_PARENT '||
                   'FROM PARC@ASYNCHRONE_DBLINK_PARC@ PA, OPERATEUR@ASYNCHRONE_DBLINK_PARC@ O, CPT_PARC_PORTABILITE@ASYNCHRONE_DBLINK_PARC@ CPP '||
                   ' WHERE PA.ID_PARC = CPP.ID_PARC  '||
                   ' AND PA.ID_OPERATEUR = O.ID_OPERATEUR(+) '||
                   ' AND PA.DATE_FIN IS NULL) P_PORT, '||
          
                '(SELECT PA.ID_PARC,PA.ID_EXTERNE,OP.CODE_OFFRE_PARC,OP.NOM_OFFRE,PA.SUPPORT_FT,PA.DATE_DEBUT,PA.DATE_FIN,PA.ID_EXTERNE_PARENT, '||
                ' cpd.code_insee as INSEE_deg,cpa.code_insee as INSEE_dsl,cpd.Nra as NRA_deg,cpa.nra as NRA_dsl '||
                   'FROM PARC@ASYNCHRONE_DBLINK_PARC@ PA, OFFRE_PARC@ASYNCHRONE_DBLINK_PARC@ OP, OPERATEUR@ASYNCHRONE_DBLINK_PARC@ O, CPT_PARC_ADSL@ASYNCHRONE_DBLINK_PARC@ cpa, CPT_PARC_DEGROUPAGE@ASYNCHRONE_DBLINK_PARC@ cpd '||
                   'WHERE PA.ID_OFFRE_PARC = OP.ID_OFFRE_PARC(+) '||
                   'AND PA.ID_PARC  NOT IN ( SELECT CPP.ID_PARC  from CPT_PARC_PORTABILITE CPP) '||
                   'AND PA.ID_OPERATEUR = O.ID_OPERATEUR(+) '||
                   'AND OP.ID_DOMAINE = 3 '||
                   'AND PA.DATE_FIN IS NULL '||
		           'AND PA.ID_PARC = cpa.id_parc(+) ' ||
		           'AND PA.ID_PARC = cpd.id_parc(+)) P_GTR, ' ||TNAME||' NRAHD ';
                 
  clauseWhere := 'WHERE NRAHD.SUPPORT = P.SUPPORT_FT(+) '||
                 'AND P.ID_EXTERNE = P_PORT.ID_EXTERNE_PARENT(+) '||  
                 'AND P.ID_EXTERNE = P_GTR.ID_EXTERNE_PARENT(+) ';
                   
 
  clauseOrder := 'ORDER BY P.CODE_OPERATEUR, P.CODE_OFFRE_PARC';
  -- Défini le fichier d'export de la table avec une capacité d'écriture allant jusqu'à 3000 caractères par champs.
	
	
	--tracefile := VI_FILE.FOPEN('@ASYNCHRONE_REP_STOCKAGE@', '&1', 'w',3000);
	tracefile := VI_FILE.FOPEN('/data/flf/viopar/files/archives/extractions', '&1', 'w',3000);
	
	VI_FILE.put_line(tracefile,'Support_ft de l''élément HD;Code opérateur de l''élément HD;Libelle opérateur de l''élément HD;Code offre parc de l''élément HD;Nom offre de l''élément HD;Id_externe de l''élément HD;Code opérateur d''interconnexion;Libellé opérateur d''interconnexion;Id_externe de l''élément de portabilité;Z0BPQ;Identifiant interne parc de l''accès GTR;Identifiant externe de l''accès de GTR;Code offre de l''accès GTR (qui identifie le type de GTR);Libellé de l''offre de l''accès GTR (qui identifie le type de GTR);ND de l''accès de GTR;Date de début de l''accès GTR;Date de fin de l''accès GTR;NRA Degroupage;INSEE Degroupage;NRA ADSL;INSEE ADSL');
 
	OPEN parcElem FOR (clauseSelect || clauseFrom || clauseWhere || clauseOrder);
	LOOP
		FETCH parcElem BULK COLLECT INTO TAB_RE LIMIT nbRows;
		EXIT WHEN TAB_RE.COUNT = 0;
		FOR i IN TAB_RE.FIRST .. TAB_RE.LAST LOOP
		    
			IF TAB_RE(i).nra_deg is not null THEN
                 NRA := TAB_RE(i).nra_deg ;
              ELSIF TAB_RE(i).nra_adsl is not null THEN
                 NRA := TAB_RE(i).nra_adsl;
              Else 
                  NRA := VIDE;
              END IF;
              
              IF TAB_RE(i).insee_deg is not null THEN
                 INSEE := TAB_RE(i).insee_deg;
              ELSIF TAB_RE(i).insee_adsl is not null THEN
                 INSEE := TAB_RE(i).insee_adsl;
              Else 
                 INSEE := VIDE;
              END IF;
			
			VI_FILE.put_line(tracefile,TAB_RE(i).support||';'||TAB_RE(i).code_op||';'||TAB_RE(i).libelle_op||';'||TAB_RE(i).code_offre||';'||TAB_RE(i).nom_offre||';'||TAB_RE(i).idExterne||';'||
							TAB_RE(i).code_op_interconnexion||';'||TAB_RE(i).libelle_op_interconnexion||';'||TAB_RE(i).idExterne_Porta||';'||TAB_RE(i).zobpq_Porta||';'||
							TAB_RE(i).idParc_GTR||';'||TAB_RE(i).idExterne_GTR||';'||TAB_RE(i).code_offre_GTR||';'||TAB_RE(i).nom_offre_GTR||';'||TAB_RE(i).support_GTR||';'||TAB_RE(i).date_debut_GTR||';'||TAB_RE(i).date_fin_GTR||';'||
							NRA||';'||INSEE);
							
  	END LOOP;
  	VI_FILE.FFLUSH(tracefile);
  	TAB_RE.delete;
	END LOOP;
	verifyClose;
 
EXCEPTION
	WHEN utl_file.invalid_path THEN
		verifyClose;
		RAISE_APPLICATION_ERROR(-20001, 'Ouverture du fichier csv impossible invalid_path');
	WHEN utl_file.invalid_mode THEN
		verifyClose;
		RAISE_APPLICATION_ERROR(-20002, 'Ouverture du fichier csv impossible invalid_mod');
	WHEN utl_file.invalid_operation THEN
		verifyClose;
		RAISE_APPLICATION_ERROR(-20003, 'Ouverture du fichier csv impossible invalid_operation');
	WHEN utl_file.write_error THEN
		verifyClose;
		RAISE_APPLICATION_ERROR(-20004, 'Ecriture sur le fichier csv impossible write_error');
	WHEN utl_file.internal_error THEN
		verifyClose;
		RAISE_APPLICATION_ERROR(-20005, 'Utilisation du fichier csv impossible internal_error');
	WHEN utl_file.invalid_maxlinesize THEN
		verifyClose;
		RAISE_APPLICATION_ERROR(-20006, 'I/O fichier csv impossible invalid_maxlinesize');
	WHEN OTHERS THEN
		verifyClose;
		RAISE;
END;
/
 
BEGIN
		-- Suppression de la table virtuelle.
		EXECUTE IMMEDIATE 'DROP TABLE EXT_' || LTRIM(TO_CHAR(DBMS_UTILITY.GET_HASH_VALUE(UPPER(REPLACE(substr(reqAsynchrone.getNomFichier('&2'),instr(reqAsynchrone.getNomFichier('&2'),'/',-1)),'.','')),1000000000,POWER(2,30)),RPAD('X',29,'X')||'X')) || ' ';
EXCEPTION WHEN OTHERS THEN
		NULL;
END;
/
ASKER CERTIFIED SOLUTION
ee_auto

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 7 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 7 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros