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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

عن استخدام utl_file


2 رد (ردود) على هذا الموضوع

#1 muaaz

muaaz

    عضو

  • الأعضــاء
  • 26 مشاركة

تاريخ المشاركة 20 July 2004 - 12:31 AM

السلام عليكم ورحمة الله وبركاته
تحية طيبة لجميع أعضاء المنتدى
وبصراحة عقدتني على الآخر 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


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


#2 muaaz

muaaz

    عضو

  • الأعضــاء
  • 26 مشاركة

تاريخ المشاركة 21 July 2004 - 12:21 PM

أرجو من الأخوة الأفاضل الرد على هذا للموضوع للضرورة .
مع كل التقدير والإحترام ..
أخوكم

#3 moahmed_egpt

moahmed_egpt

    عضو

  • الأعضــاء
  • 1 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 14 February 2013 - 02:15 PM

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)

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