通過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) := 'hr@somecompany.com';
recieveraddress varchar2(2000) :='peter.sword@somecompany.com';
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...