﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-☆-文章分类-PLSQL数据库编程</title><link>http://www.blogjava.net/lizhuxin/category/33771.html</link><description>☆</description><language>zh-cn</language><lastBuildDate>Thu, 15 Jan 2009 04:00:49 GMT</lastBuildDate><pubDate>Thu, 15 Jan 2009 04:00:49 GMT</pubDate><ttl>60</ttl><item><title>pl/sql每天或每分钟定时执行sql脚本</title><link>http://www.blogjava.net/lizhuxin/articles/249834.html</link><dc:creator>☆</dc:creator><author>☆</author><pubDate>Mon, 05 Jan 2009 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/lizhuxin/articles/249834.html</guid><wfw:comment>http://www.blogjava.net/lizhuxin/comments/249834.html</wfw:comment><comments>http://www.blogjava.net/lizhuxin/articles/249834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lizhuxin/comments/commentRss/249834.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lizhuxin/services/trackbacks/249834.html</trackback:ping><description><![CDATA[<p>/**存储过程execute*/<br />
create or replace package myTest is<br />
&nbsp; PROCEDURE execute(v_day IN VARCHAR2);<br />
end test;</p>
<p><br />
create or replace package body myTest&nbsp; is</p>
<p>PROCEDURE execute(v_day IN VARCHAR2) as<br />
&nbsp; begin<br />
&nbsp;&nbsp;&nbsp; DM_FEE_call(v_day);<br />
&nbsp;&nbsp;&nbsp; DM_FEE_KA(v_day);<br />
&nbsp; end;</p>
<p>end myTest ;</p>
<p>创建job，每天定时执行<br />
/**每天11：45执行*/<br />
begin<br />
&nbsp; sys.dbms_job.submit(job =&gt; :job,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; what =&gt; 'myTest.execute();',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next_date =&gt; to_date('24-12-2008 11:45:00', 'dd-mm-yyyy hh24:mi:ss'),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interval =&gt; 'TRUNC(SYSDATE+1)+(11*60+45)/(24*60)');<br />
&nbsp; commit;<br />
end;<br />
/<br />
</p>
<p>创建job，每隔一分钟定时执行，每隔一份中执行时，时间会有延迟，一般要63秒左右才能定时执行一次，目前没有好的解决方法。<br />
/**每隔一分钟定时执行*/<br />
begin<br />
&nbsp; sys.dbms_job.change(job =&gt; 21,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; what =&gt; 'myTest.execute();',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next_date =&gt; to_date('24-12-2008 16:45:11', 'dd-mm-yyyy hh24:mi:ss'),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interval =&gt; 'SYSDATE+1/(24*60)');<br />
&nbsp; commit;<br />
end;<br />
/</p>
<p><br />
&nbsp;</p>
<img src ="http://www.blogjava.net/lizhuxin/aggbug/249834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lizhuxin/" target="_blank">☆</a> 2009-01-05 09:57 <a href="http://www.blogjava.net/lizhuxin/articles/249834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PLSQL编程程序包实例</title><link>http://www.blogjava.net/lizhuxin/articles/221964.html</link><dc:creator>☆</dc:creator><author>☆</author><pubDate>Thu, 14 Aug 2008 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/lizhuxin/articles/221964.html</guid><wfw:comment>http://www.blogjava.net/lizhuxin/comments/221964.html</wfw:comment><comments>http://www.blogjava.net/lizhuxin/articles/221964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lizhuxin/comments/commentRss/221964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lizhuxin/services/trackbacks/221964.html</trackback:ping><description><![CDATA[PLSQL编程程序包实例：<br />
<br />
<p>create or replace package myPackage0136 is</p>
<p>&nbsp; -- Author&nbsp; : 李助新<br />
&nbsp; -- Created : 2008-7-28 14:10:10</p>
<p>&nbsp;function get_3avg_profit(m_sale_man in varchar2,m_bill_date IN VARCHAR2) return NUMBER;<br />
&nbsp;function get_6avg_profit(m_sale_man in varchar2,m_bill_date IN VARCHAR2) return NUMBER;</p>
<p>-- Purpose : 创建表 tableName <br />
procedure myPro0136(tableName in varchar2) ; </p>
<p>-- Purpose :删除表tableName <br />
procedure&nbsp; dropTable(tableName in varchar2);</p>
<p>-- Purpose : 判断表tableName是否存在&nbsp; <br />
function&nbsp; tableIsExist(tableName in varchar2)&nbsp; return boolean;</p>
<p>-- Purpose :根据员工编号，返回员工的兴趣 <br />
function myfunction0136(empId in varchar2) return varchar2;</p>
<p>-- Purpose :将最后结果插入到表 tableName中<br />
procedure&nbsp; insertToTable(tableName in varchar2);</p>
<p>-- Purpose : 完成整个处理过程<br />
procedure&nbsp; dataManage ;</p>
<p><br />
end myPackage0136;<br />
/<br />
create or replace package body myPackage0136 IS</p>
<p>/*<br />
&nbsp;&nbsp; 函数名：get_3avg_profit<br />
&nbsp;&nbsp; 作&nbsp; 者：李助新<br />
&nbsp;&nbsp; 参数：传入员工编号，月份<br />
&nbsp;&nbsp; 功&nbsp; 能：根据员工编号，月份求出前三个月平均利润<br />
&nbsp;&nbsp; 返回值：返回前半年平均利润<br />
&nbsp; */<br />
&nbsp; FUNCTION GET_3AVG_PROFIT(M_SALE_MAN IN VARCHAR2, M_BILL_DATE IN VARCHAR2)<br />
&nbsp;&nbsp;&nbsp; RETURN NUMBER IS<br />
&nbsp;&nbsp;&nbsp; AVG1_PROFIT NUMBER;<br />
&nbsp;&nbsp;&nbsp; CURSOR CUR IS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT AVF3_PROFIT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT SALE_MAN,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BILL_DATE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PROFIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUNC((LAG(PROFIT, 2, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 1, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 0, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE)) / 3,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) AVF3_PROFIT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT SALE_MAN,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BILL_DATE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUM(PROFIT) PROFIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROW_NUMBER() OVER(PARTITION BY BILL_DATE ORDER BY SUM(PROFIT)) RW<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT C.BILL_ID_D,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.BILL_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.GOOD_NUMS,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.COST_PRICE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.PROFIT PROFIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.SALE_MAN SALE_MAN,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TO_CHAR(D.BILL_DATE, 'yyyy-mm') BILL_DATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT A.BILL_ID_D BILL_ID_D,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.BILL_CODE BILL_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.GOOD_NUMS GOOD_NUMS,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.PRICE * A.GOOD_NUMS PRICE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.COST_PRICE * A.GOOD_NUMS COST_PRICE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (A.PRICE - B.COST_PRICE) *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.GOOD_NUMS PROFIT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM DSS_INFO_SALE_BILL_D A,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DSS_INFO_GOOD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE A.GOOD_ID = B.GOOD_ID) C,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DSS_INFO_SALE_BILL D<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE C.BILL_CODE = D.BILL_CODE AND D.SALE_MAN = M_SALE_MAN)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY SALE_MAN, BILL_DATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY BILL_DATE))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp; BILL_DATE = M_BILL_DATE;<br />
&nbsp;&nbsp;&nbsp; R_EMP CUR%ROWTYPE;<br />
&nbsp; BEGIN<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp; OPEN CUR;<br />
&nbsp;&nbsp;&nbsp; FETCH CUR<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO R_EMP;<br />
&nbsp;&nbsp;&nbsp; AVG1_PROFIT := R_EMP.AVF3_PROFIT;<br />
&nbsp;&nbsp;&nbsp; CLOSE CUR;<br />
&nbsp;&nbsp;&nbsp; RETURN AVG1_PROFIT;<br />
&nbsp; END GET_3AVG_PROFIT;</p>
<p>&nbsp; /*<br />
&nbsp;&nbsp; 函数名：get_6avg_profit<br />
&nbsp;&nbsp; 作&nbsp; 者：李助新<br />
&nbsp;&nbsp; 参数：传入员工编号，月份<br />
&nbsp;&nbsp; 功&nbsp; 能：根据员工编号，月份求出前半年平均利润<br />
&nbsp;&nbsp; 返回值：返回前半年平均利润<br />
&nbsp; */<br />
&nbsp; FUNCTION GET_6AVG_PROFIT(M_SALE_MAN IN VARCHAR2, M_BILL_DATE IN VARCHAR2)<br />
&nbsp;&nbsp;&nbsp; RETURN NUMBER IS<br />
&nbsp;&nbsp;&nbsp; AVG1_PROFIT NUMBER;<br />
&nbsp;&nbsp;&nbsp; CURSOR CUR IS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT AVF6_PROFIT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT SALE_MAN,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BILL_DATE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PROFIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUNC((LAG(PROFIT, 5, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 4, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 3, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 2, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 1, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LAG(PROFIT, 0, 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OVER(PARTITION BY SALE_MAN ORDER BY BILL_DATE)) / 6,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) AVF6_PROFIT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT SALE_MAN,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BILL_DATE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUM(PROFIT) PROFIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROW_NUMBER() OVER(PARTITION BY BILL_DATE ORDER BY SUM(PROFIT)) RW<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT C.BILL_ID_D,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.BILL_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.GOOD_NUMS,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.COST_PRICE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.PROFIT PROFIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.SALE_MAN SALE_MAN,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TO_CHAR(D.BILL_DATE, 'yyyy-mm') BILL_DATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT A.BILL_ID_D BILL_ID_D,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.BILL_CODE BILL_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.GOOD_NUMS GOOD_NUMS,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.PRICE * A.GOOD_NUMS PRICE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.COST_PRICE * A.GOOD_NUMS COST_PRICE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (A.PRICE - B.COST_PRICE) *<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.GOOD_NUMS PROFIT<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM DSS_INFO_SALE_BILL_D A,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DSS_INFO_GOOD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE A.GOOD_ID = B.GOOD_ID) C,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DSS_INFO_SALE_BILL D<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE C.BILL_CODE = D.BILL_CODE AND D.SALE_MAN = M_SALE_MAN )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY SALE_MAN, BILL_DATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY BILL_DATE))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp; BILL_DATE = M_BILL_DATE;<br />
&nbsp;&nbsp;&nbsp; R_EMP CUR%ROWTYPE;<br />
&nbsp; BEGIN<br />
&nbsp;&nbsp; OPEN CUR;<br />
&nbsp;&nbsp;&nbsp; FETCH CUR<br />
&nbsp;&nbsp;&nbsp;&nbsp; INTO R_EMP;<br />
&nbsp;&nbsp;&nbsp;&nbsp; AVG1_PROFIT := R_EMP.AVF6_PROFIT;<br />
&nbsp;&nbsp;&nbsp; CLOSE CUR;<br />
&nbsp;&nbsp;&nbsp; RETURN AVG1_PROFIT;<br />
&nbsp; END GET_6AVG_PROFIT;<br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; /*过程名：myPro0136<br />
&nbsp;功能：&nbsp; 创建一张临时表<br />
*/<br />
procedure myPro0136(tableName in varchar2) is<br />
sql_str long; <br />
begin<br />
&nbsp; sql_str :='create table '||tableName||' (<br />
&nbsp;&nbsp; EMP_ID&nbsp; varchar(32),<br />
&nbsp;&nbsp; EMP_NAME VARCHAR2(32),<br />
&nbsp;&nbsp; GENDER&nbsp;&nbsp;&nbsp; CHAR(1),<br />
&nbsp;&nbsp; ADDRESS&nbsp;&nbsp; VARCHAR2(64),<br />
&nbsp;&nbsp; PHONE&nbsp;&nbsp;&nbsp;&nbsp; NUMBER,<br />
&nbsp;&nbsp; DEGREE_ID VARCHAR2(16),<br />
&nbsp;&nbsp; DEP_ID&nbsp;&nbsp;&nbsp; VARCHAR2(20),<br />
&nbsp;&nbsp; INTEREST&nbsp; VARCHAR2(100)<br />
&nbsp; )';<br />
&nbsp; Execute Immediate sql_str;<br />
&nbsp; commit;&nbsp; <br />
end myPro0136;</p>
<p><br />
/*函数名：tableIsExist<br />
&nbsp; 参数：tableName，传入一张表的名称<br />
&nbsp;功能：判断该表是否存在，如果存在就返回true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 否则返回false<br />
&nbsp; 返回类型：boolean<br />
*/<br />
function tableIsExist(tableName in varchar2)return boolean<br />
is<br />
&nbsp;Result boolean;<br />
&nbsp;i INTEGER;<br />
&nbsp;begin<br />
&nbsp; SELECT COUNT(*)&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO&nbsp;&nbsp; i&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM&nbsp;&nbsp; user_tables&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp;&nbsp; table_name = UPPER(tableName);<br />
&nbsp;&nbsp;&nbsp; if i = 1<br />
&nbsp;&nbsp;&nbsp; then<br />
&nbsp;&nbsp;&nbsp;&nbsp; Result :=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp; Result:=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp; end if;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; return(Result);<br />
end tableIsExist;</p>
<p><br />
/*过程名：dropTable<br />
&nbsp; 参数：tableName，传入一张表的名称<br />
&nbsp;功能：删除tableName表<br />
*/<br />
procedure dropTable(tableName in varchar2)<br />
is<br />
&nbsp;sql_str long; <br />
&nbsp;begin<br />
&nbsp; sql_str :='drop table '||tableName;<br />
&nbsp; Execute Immediate sql_str;<br />
&nbsp; commit;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
end dropTable;</p>
<p>&nbsp;</p>
<p>/*函数名：myFunction0136<br />
&nbsp;功能：&nbsp; 根据员工编号查找员工的兴趣，以字符串的形式返回<br />
&nbsp; 返回类型：varchar2<br />
*/<br />
function myFunction0136(empId in varchar2) return varchar2<br />
is<br />
&nbsp; Result varchar2(50);<br />
&nbsp; temp varchar2(16);<br />
&nbsp; sql_str long;<br />
&nbsp; cur sys_refcursor;<br />
begin<br />
&nbsp; sql_str :='select interest_desc from code_interest0136 where emp_id ='|| empId ;<br />
&nbsp; open cur for sql_str; <br />
&nbsp; loop<br />
&nbsp;&nbsp;&nbsp; fetch cur into temp;<br />
&nbsp;&nbsp;&nbsp; Result := Result || temp||',';<br />
&nbsp;&nbsp;&nbsp; exit when cur%notfound;<br />
&nbsp; end loop;<br />
&nbsp; close cur;&nbsp; <br />
&nbsp; Result := substr(Result,1,length(Result)-1);&nbsp;&nbsp;&nbsp; <br />
&nbsp; return (Result);<br />
end myFunction0136;</p>
<p>/*过程名：insertToTable<br />
&nbsp; 参数：tableName，传入一张表的名称<br />
&nbsp;功能：将结果集插入到表tableName中<br />
*/<br />
procedure&nbsp; insertToTable(tableName in varchar2)<br />
is<br />
sql_str long; <br />
begin<br />
&nbsp;sql_str := 'insert into '|| tableName ||' (EMP_ID,EMP_NAME,GENDER,ADDRESS,<br />
&nbsp;PHONE,DEGREE_ID,DEP_ID,INTEREST)'<br />
&nbsp;||'( select a.EMP_ID,a.EMP_NAME,a.GENDER,a.ADDRESS,a.PHONE,a.DEGREE_ID,a.DEP_ID,<br />
&nbsp;myPackage0136.myFunction0136(a.emp_id) from info_emp0136 a )';<br />
&nbsp;dbms_output.put_line(sql_str);<br />
&nbsp;execute immediate sql_str;<br />
&nbsp;commit; <br />
end insertToTable;</p>
<p>/*过程名：dataManage<br />
&nbsp;功能：实现整个处理过程<br />
*/<br />
procedure&nbsp; dataManage<br />
is<br />
begin<br />
--如果存在表info_employer就先删除，然后创建表<br />
&nbsp;if myPackage0136.tableIsExist('info_employer')<br />
&nbsp;then<br />
&nbsp;&nbsp;&nbsp; myPackage0136.dropTable('info_employer');<br />
&nbsp;end if;<br />
&nbsp;&nbsp;&nbsp; myPackage0136.myPro0136('info_employer');&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; myPackage0136.insertToTable('info_employer');<br />
&nbsp;--异常处理<br />
&nbsp;&nbsp; exception <br />
&nbsp;&nbsp;&nbsp; when others then<br />
&nbsp;&nbsp;&nbsp; dbms_output.put_line('error');<br />
end dataManage;</p>
<p>end myPackage0136;<br />
/<br />
</p>
<img src ="http://www.blogjava.net/lizhuxin/aggbug/221964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lizhuxin/" target="_blank">☆</a> 2008-08-14 12:52 <a href="http://www.blogjava.net/lizhuxin/articles/221964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PLSQL数据库编程基础</title><link>http://www.blogjava.net/lizhuxin/articles/221963.html</link><dc:creator>☆</dc:creator><author>☆</author><pubDate>Thu, 14 Aug 2008 04:50:00 GMT</pubDate><guid>http://www.blogjava.net/lizhuxin/articles/221963.html</guid><wfw:comment>http://www.blogjava.net/lizhuxin/comments/221963.html</wfw:comment><comments>http://www.blogjava.net/lizhuxin/articles/221963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lizhuxin/comments/commentRss/221963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lizhuxin/services/trackbacks/221963.html</trackback:ping><description><![CDATA[PLSQL数据库编程基础：<br />
<br />
<p>1)基本赋值<br />
declare <br />
&nbsp; i varchar(16);<br />
begin<br />
&nbsp; SELECT COUNT(*)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO i<br />
&nbsp;&nbsp; FROM t_info_log<br />
&nbsp;&nbsp;&nbsp; WHERE visit_id ='12156';<br />
&nbsp;&nbsp; DBMS_OUTPUT.PUT_LINE (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'hahaa' ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'hun'); <br />
end;<br />
功能:将sql查询结果放入 i中。</p>
<p>2)检测数据库中的表是否存在<br />
select count(*)<br />
into i<br />
from user_tables<br />
where table_name = upper('test2_01');<br />
i=1时,test2_01存在,i=0时,不存在。</p>
<p>3)sql动态执行<br />
&nbsp;if i = 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str := 'drop table test2_01 ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; execute immediate str;<br />
end if;<br />
动态sql和静态sql的主要区别是，静态sql会检查表是否存在，动态sql不会检测。</p>
<p>4)游标的使用<br />
a)<br />
procedure myProcedure(empId in varchar2) <br />
is<br />
&nbsp; sql_str long;<br />
&nbsp; temp&nbsp; varchar2(32);<br />
&nbsp; cur sys_refcursor;<br />
begin<br />
&nbsp; sql_str :='select interest_desc from code_interest0136 where emp_id ='|| empId ;<br />
&nbsp; open cur for sql_str; <br />
&nbsp; loop<br />
&nbsp;&nbsp;&nbsp; fetch cur into temp;<br />
&nbsp;&nbsp;&nbsp; dbms_output.put_line(temp);<br />
&nbsp;&nbsp;&nbsp; exit when cur%notfound;<br />
&nbsp; end loop;<br />
&nbsp; close cur;&nbsp; <br />
end myProcedure;</p>
<p>b)<br />
cursor cur is select id from info_user;<br />
loop<br />
&nbsp; open cur;<br />
&nbsp; fetch cur into my_id;<br />
&nbsp;&nbsp;&nbsp; //处理.............<br />
&nbsp; exit when cur%notfound;<br />
end loop;</p>
<p>5)记录RECORD的使用<br />
create or replace procedure table0136 is<br />
TYPE tableRecord IS RECORD (<br />
a1 number,<br />
a2 varchar2(32)<br />
);<br />
v_ret tableRecord;<br />
cursor cur is select * from aa_1;<br />
a varchar2(20);</p>
<p>begin<br />
open cur;<br />
loop<br />
fetch cur into v_ret;<br />
DBMS_OUTPUT.put_line(v_ret.a1||'&nbsp;&nbsp;&nbsp; '||v_ret.a2);<br />
exit when cur%NOTFOUND;<br />
end loop;<br />
end table0136;<br />
</p>
<img src ="http://www.blogjava.net/lizhuxin/aggbug/221963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lizhuxin/" target="_blank">☆</a> 2008-08-14 12:50 <a href="http://www.blogjava.net/lizhuxin/articles/221963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>