惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 司徒正美
D
DataBreaches.Net
J
Java Code Geeks
月光博客
月光博客
MyScale Blog
MyScale Blog
博客园 - Franky
Jina AI
Jina AI
量子位
博客园 - 聂微东
博客园 - 叶小钗
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园 - 【当耐特】
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
小众软件
小众软件
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页

博客园 - karlen

Oracle SQL 性能优化技巧 Ajax應用實例 轉載:分隔數組返回table 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 Baby 给老爸的留言 轉載:利用SQL*Loader将 Excel 数据导出到数据库中 Oracle 10g (10.2.0.2) for NT 企业版 轉載:oracle基礎知識學習二 轉載:oracle基礎知識學習一 游标遍历%rowtype中的记录 Sql2005安裝手冊 Ajax應用實例 简单的生活目标 工作中的小虚惊 心情随感 一起努力 table manners 项目管理中的好管家-CMMI过程中的PPQA工作 Open your mouth, just speaking!
Oracle 9i SP實例
karlen · 2008-12-15 · via 博客园 - karlen

create or replace PROCEDURE "SP_SETSCORE" (strQUESTAPP_NO VARCHAR2,strID VARCHAR2,o_Date Date)
/****************************************************
' 函數名稱 : 重計分數
' 功能說明 : 重新計算商品的分數
' 參數說明 :
'  範例'
   版本變更:
'  xx. YYYY/MM/DD   VER     AUTHOR          COMMENTS
'  1.  2008/06/17   1.00       xxxx              CREATE
*****************************************************/
is
--問卷調查評語資料檔
s_COMMODITY_NO VARCHAR2(20):='';--商品編號
s_HIDE_SCORE char(1):='';--是否隱藏不雅評分
f_AVG_SCORE float:=0.0;--綜合平均分數
--商品評分及人數統計檔
f_CAVG_SCORE float:=0.0;--商品評比總分
i_TOTAL_COUNT NUMBER:=0;--評比總人數
i_COMM_RATE_1 NUMBER:=0;--落點人數
i_COMM_RATE_2 NUMBER:=0;--落點人數
i_COMM_RATE_3 NUMBER:=0;--落點人數
i_COMM_RATE_4 NUMBER:=0;--落點人數
--商品題目資料檔
--i_TOTAL_SCORE NUMBER:=0;--本題目的評比總分
--i_TOTAL_COUNT2 NUMBER:=0;--本題目的評比總人數
begin

     SELECT A.COMMODITY_NO,A.AVG_SCORE ,A.HIDE_SCORE
     INTO s_COMMODITY_NO,f_AVG_SCORE,s_HIDE_SCORE
     FROM QUEST_APPRAISAL A
     WHERE A.STATUS='Y' AND A.QUESTAPP_NO=strQUESTAPP_NO;
    
     -- 如果以隱藏評分,就跳出
     IF s_HIDE_SCORE='Y' THEN
        RETURN;
     END IF;
     --隱藏評分
     UPDATE QUEST_APPRAISAL SET HIDE_SCORE='Y',MDY_USER=strID,MDY_DATE=o_Date WHERE QUESTAPP_NO=strQUESTAPP_NO;
    
     --商品評分及人數統計檔
     SELECT B.CAVG_SCORE ,B.TOTAL_COUNT ,B.COMM_RATE_1,B.COMM_RATE_2,B.COMM_RATE_3,B.COMM_RATE_4
     INTO f_CAVG_SCORE,i_TOTAL_COUNT,i_COMM_RATE_1,i_COMM_RATE_2,i_COMM_RATE_3,i_COMM_RATE_4
     FROM COMMSCORE B WHERE B.COMMODITY_NO=s_COMMODITY_NO ;
    
     IF f_AVG_SCORE>=1 AND f_AVG_SCORE<2 THEN--(1 ~ 2)
        i_COMM_RATE_1:=i_COMM_RATE_1-1;
     ELSE
        IF f_AVG_SCORE>=2 AND f_AVG_SCORE<3 THEN--(2 ~ 3)
           i_COMM_RATE_2:=i_COMM_RATE_2-1;
        ELSE
             IF f_AVG_SCORE>=3 AND f_AVG_SCORE<4 THEN--(3 ~ 4)
                i_COMM_RATE_3:=i_COMM_RATE_3-1;
             ELSE
                 IF f_AVG_SCORE>=4 AND f_AVG_SCORE<=5 THEN--(4 ~ 5)
                 i_COMM_RATE_4:=i_COMM_RATE_4-1;
                 END IF;
             END IF;
        END IF;       
     END IF;
    
     f_CAVG_SCORE:=f_CAVG_SCORE-f_AVG_SCORE;
     i_TOTAL_COUNT:=i_TOTAL_COUNT-1;
    
     UPDATE COMMSCORE
     SET CAVG_SCORE=f_CAVG_SCORE,TOTAL_COUNT=i_TOTAL_COUNT
     ,COMM_RATE_1=i_COMM_RATE_1,COMM_RATE_2=i_COMM_RATE_2
     ,COMM_RATE_3=i_COMM_RATE_3,COMM_RATE_4=i_COMM_RATE_4
     ,MDY_USER=strID,MDY_DATE=o_Date
     WHERE COMMODITY_NO=s_COMMODITY_NO ;

     --問卷調查評分資料檔
     DECLARE CURSOR C1 IS
            SELECT * FROM QUEST_SURVEY  WHERE QUESTAPP_NO=strQUESTAPP_NO;
     R1 C1%ROWTYPE;      
     BEGIN
      OPEN C1;--開啟游標C1
      LOOP   --letbbilliard
      FETCH C1 INTO R1;
      EXIT WHEN C1%NOTFOUND;--如果游標紀錄取完推出回圈 
 
         UPDATE COMM_QUEST SET TOTAL_SCORE=TOTAL_SCORE-R1.SCORE,TOTAL_COUNT=TOTAL_COUNT-1
         WHERE COMM_NO=s_COMMODITY_NO AND QUEST_NO=R1.QUESTION_NO ;
        
      END LOOP;
      CLOSE C1;--關閉游標C1
      END;
      COMMIT;
end SP_SETSCORE;