الانتقال إلى المحتوى

عن استخدام utl_file


muaaz

Recommended Posts

السلام عليكم ورحمة الله وبركاته
تحية طيبة لجميع أعضاء المنتدى
وبصراحة عقدتني على الآخر utl_fileأرجو من الإخوان المساعدة في هذه المشكلة عندما جربت
الكود للكتابة على ملف :

create or replace procedure sal_status(p_filedir in varchar2,p_filename in varchar2)
is
v_filehandle utl_File.file_type;
cursor emp_info is
select ename,sal,deptno from emp
order by deptno;
v_newdeptno number;
v_olddeptno number:=0;
begin
v_filehandle :=utl_file.fopen(p_filedir,p_filename,'w');
utl_file.putf(v_filehandle,'salary report : Generated on %s\n',sysdate);
utl_file.new_line(v_filehandle);
for v_emp_rec in emp_info
loop
v_newdeptno:=v_emp_rec.deptno;
if v_newdeptno <> v_olddeptno then
utl_file.putf(v_filehandle,'Department: %s\n',v_emp_rec.deptno);
end if;
utl_file.putf(v_filehandle,'	Employee:%s earns: %s\n',v_emp_rec.ename,v_emp_rec.sal);
v_olddeptno:=v_newdeptno;
end loop;
utl_file.put_line(v_filehandle,'**** End of Report ****');
utl_file.fclose(v_filehandle);
exception
when utl_file.invalid_path then
raise_application_error(-20001,'invalid path');
when utl_file.invalid_filehandle then
raise_application_error(-20002,'invlaid file ');
when utl_file.write_error then
raise_application_error(-20003,'unable to write to file ');
end;
/


عند التنفيذ :

sql> exec sal_status('C:\test ' , 'salary.txt ');



حيث أن الـTEST هو الدليل والــ Salary هو الملف

سؤال ثاني :

الكود للقراءة من ملف :

create or replace procedure get_sal(dir_file in varchar2,txt_file varchar2)
is
v_file utl_file.file_type;
begin
v_file:=utl_file.fopen(dir_file,txt_file,'r');
utl_file.get_line(v_file);
dbms_output.put_line('End of Line ');
exception
when utl_file.invalid_mode then
raise_application_error(-20002,'invalid mode');
when utl_file.invalid_path then
raise_application_error(-20001,'invalid path');
when utl_file.invalid_filehandle then
raise_application_error(-20003,'invalid filehandle');
when utl_file.read_error then
raise_application_error(-20004,'invalid read error');
end;
/



يعطي خطأ في برامترات الـget_line


تم تنسيق المشاركة : أخي العزيز تنظيمك لمشاركتك يعجل لك بالرد ...
إدارة المنتدى

رابط هذا التعليق
شارك

  • بعد 8 سنة...

SET SERVEROUTPUT ON;


DECLARE
V_FILE UTL_FILE.FILE_TYPE;
V_RESULT VARCHAR2(2000);
X NUMBER:=1;
BEGIN
V_FILE:=UTL_FILE.FOPEN('MY_DIR' , 'TEXT.TXT' , 'R');
LOOP
UTL_FILE.GET_LINE(V_FILE,V_RESULT);
DBMS_OUTPUT.PUT_LINE(V_RESULT);
X:= X + 1;
EXIT WHEN X=55;
END LOOP;
UTL_FILE.FCLOSE(V_FILE);
END;
/
SHOW ERROR;



-------------------------------


GET_LINE(FILE , RESULT OUT PUT CHAR)


البرامتر الثاني يستخدم للجلب القيمة من الملف النصي

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية