3.綜合應(yīng)用題
系統(tǒng)已經(jīng)建立了order_detail表,并已追加記錄。
當(dāng)order_detail表中的單價(jià)修改后,應(yīng)該根據(jù)該表的“單價(jià)”和“數(shù)量”字段修改order_list表的總金額字段,現(xiàn)在有部分order_list記錄的總金額字段值不正確,請(qǐng)編寫程序挑出這些記錄,并將這些記錄存放到一個(gè)名為od_mod的表中(與order_list表結(jié)構(gòu)相同,自己建立),然后根據(jù)order_detail表的“單價(jià)”和“數(shù)量”字段修改od_mod表的總金額字段(注意,一個(gè)od_mod記錄可能對(duì)應(yīng)幾條order_detail記錄),最后,od_mod表的結(jié)果要求按總金額升序排序,編寫的程序最后保存為prog1.prg。
【參考答案】
具體步驟如下:
、 在“命令”窗口輸入命令:MODIFY COMMAND prog1。
、 進(jìn)入程序文件編輯器,在程序編輯窗口中輸入如下程序段:
*******prog1.prg文件中的程序段*******
SET TALK OFF
SET SAFETY OFF
SELECT 訂單號(hào),SUM(單價(jià)*數(shù)量)AS總金額;
FROM order_detail;
GROUP BY 訂單號(hào);
INTO CURSOR curtable
SELECT order_list.*;
FROM order_list,curtable;
WHERE order_list.訂單號(hào)=curtable.訂單號(hào)AND order_list.總金額<>curtable.總金額;
INTO TABLE od_mod
USE od_mod
DO WHILE NOT EOF()&&遍歷od_mod中的每一條記錄
SELECT curtable.總金額FROM curtable;
WHERE curtable.訂單號(hào)=od_mod.訂單號(hào);
INTO ARRAY AFieldsValue
REPLACE 總金額 WITH AFieldsValue
SKIP
ENDDO
CLOSE ALL
SELECT * FROM od_mod ORDER BY 總金額;
INTO CURSOR curtable
SELECT * FROM curtable INTO TABLE od_mod
SET SAFETY ON
SET TALK ON
************************************
、 保存設(shè)計(jì)結(jié)果,在“命令”窗口輸入命令:DO prog1,執(zhí)行程序文件。
【試題解析】
本試題考查的主要是SQL語句的應(yīng)用,包括數(shù)據(jù)定義、數(shù)據(jù)修改和數(shù)據(jù)查詢功能,設(shè)計(jì)過程中注意數(shù)據(jù)表和表中字段的選取,修改每條記錄時(shí),可利用DO-WHILE循環(huán)語句逐條處理表中每條記錄。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試精華備考資料匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |