如何用oracle產生excle檔案

2021-07-14 19:42:28 字數 2717 閱讀 5405

通過oracle產生csv檔案先決條件是:

建立oracle directory,將write許可權付給執行procedure的使用者 

以下是建立oracle directory的方法和步驟:

在oracle伺服器的本地磁碟上新建乙個資料夾,如d:\mydirectory 

以sys身份用sqlplus登陸oracle伺服器 

執行目錄建立命令:create or replace directory mydir as 'd:\mydirectory'; 

執行使用者授權命令:grant read, write on directory mydir to hr;

下列是呼叫示例:

create or replace procedure stationary_list

(department_name in varchar2,email_subject in varchar2) as

file_location varchar2(20):='mydir';

file_name varchar2(200);

fhnd utl_file.file_type;

line_buff nvarchar2(4000);

sendoraddress varchar2(30) := '[email protected]';

recieveraddress varchar2(2000) :='[email protected]';

emailserver varchar2(30) :='mail.somecompany.com';

port number := 25;

conn utl_smtp.connection;

data raw(2000);

error_string nvarchar2(500);

cursor item_list is select index,item_name,price,quantity,holder from stationaryinventory where department=department_name;

begin

begin

--generate attchement file

file_name:='2007-1-1 report.csv';

begin

fhnd:=utl_file.fopen(file_location,file_name,'w');

line_buff:='index,item name,price,quantity,holder';

utl_file.put_line(fhnd,line_buff);

for eachitem in item_list loop

line_buff:=eachitem.index||','||eachitem.item_name||','||eachitem.price||','||eachitem.quantity||','        ||eachitem.holder;

utl_file.put_line(fhnd,line_buff);

end loop;

utl_file.fclose(fhnd);

end;

--send email

begin

powermail.smtp_host:= emailserver;

powermail.smtp_port:= port;

conn:= powermail.begin_mail(sendoraddress,recieveraddress,email_subject,powermail.multipart_mime_type);

powermail.attach_text(conn,'items list of stationary for '||department_name||'.

'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')||'

hr system of some company','text/html');

begin

fhnd:=utl_file.fopen(file_location,file_name,'r');

loop

utl_file.get_raw(fhnd, data, powermail.max_base64_line_width);

powermail.write_raw(conn,utl_encode.base64_encode(data));

end loop;

utl_file.fclose(fhnd);

exception when others then

utl_file.fclose(fhnd);

end;

powermail.end_attachment(conn); 

powermail.end_mail(conn);

utl_file.fremove(file_location,file_name);

end;

--if occurs error, get error info;

exception when others then

error_string:=sqlerrm;

end;

insert into system_log (log_type,run_time,error_info) values ('hr stationary list',sysdate,error_string);

end;

oracle 如何用pl sql解鎖

oracle中檢視表是否被鎖 檢視表是否被鎖 select rule a.sid,b.owner,object name,object type from v lock a,all objects b where type tm and a.id1 b.object id 這樣可以把它殺掉 sele...

如何將oracle中的資料匯入到excle中

工作過程中需要將oracle中的資料匯入到excle中,自己做了一下,先將方法介紹如下,你可以根據自己的實際情況,做出更改。1,建立乙個emp.sql檔案我的是在f sql emp.sql set line 120 set pagesize 100 set feedback off 關閉類似於 已選...

oracle如何產生隨機數

oracle 如何產生乙個隨機數 dbms random 1 小數 0 1 select dbms random.value from dual 2 指定範圍內的小數 0 100 select dbms random.value 0,100 from dual 3 指定範圍內的整數 0 100 se...