下面將為前面建立的tempuser用戶建立一個名為testtable的數據表。 在該表中有recordnumber整數型字段和currentdate時間型字段,編制一個PL/SQL程序完成向該表中自動輸入100個記錄,要求recordnumber字段從1到100,currentdate字段為當前系統時間。 (1)前面建立的tempuser用戶默認的表空間為USERS,因此,要想使該用戶能夠使用表空間建立數據方案對象,必須首先給其賦予名為“RESOURCE”的角色。 (2)以system用戶、SYSDBA身份登錄數據庫后,在【企業治理器】中按照修改用戶的步驟進行操作,直到出現如圖9.1所示的編輯用戶的【角色】選項卡。 在【可用】下拉列表框中選擇“RESOURCE”,單擊按鈕將其添加到【已授予】列表框中。【默認值】單元格被選中,單擊“確定”按鈕。 (3)讀者也可以在【SQLPlus Worksheet】中直接執行如下SQL代碼完成上述操作。 ――――――――――――――――――――――――――――――――――――― GRANT "RESOURCE" TO "TEMPUSER"; ALTER USER "TEMPUSER" DEFAULT ROLE ALL ――――――――――――――――――――――――――――――――――――― 【配套程序位置】:第9章/grantrole.sql。 (4)按照創建數據表的操作步驟進行,直到出現如圖9.2所示的創建表的【一般信息】選項卡。 在【名稱】文本框中輸入“testable”。 在【方案】下拉列表框中選擇“tempuser”。 在【表空間】下拉列表框中選擇“users”。 選擇【表】/【標準】單選鈕。 選擇【定義列】單選鈕。 在【表列定義區】中輸入兩個數據列的定義。 完成設置后單擊按鈕。 (5)讀者也可以在【SQLPlus Worksheet】中直接執行如下SQL代碼完成上述操作。 ――――――――――――――――――――――――――――――――――――― CREATE TABLE "TEMPUSER"."TESTTABLE" ("RECORDNUMBER" NUMBER(4) NOT NULL, "CURRENTDATE" DATE NOT NULL) TABLESPACE "USERS" ――――――――――――――――――――――――――――――――――――― 【配套程序位置】:第9章/createtesttable.sql。 (6)以tempuser用戶身份登錄【SQLPlus Worksheet】,執行下列SQL代碼完成向數據表tempuser.testable中輸入100個記錄的功能。執行結果如圖9.3所示。 ――――――――――――――――――――――――――――――――――――― set serveroutput on declare maxrecords constant int:=100; i int :=1; begin for i in 1..maxrecords loop insert into tempuser.testtable(recordnumber,currentdate) values(i,sysdate); end loop; dbms_output.put_line('成功錄入數據!'); commit; end; ――――――――――――――――――――――――――――――――――――― 【配套程序位置】:第9章/inserttesttable.sql。 (7)在【SQLPlus Worksheet】中執行下列語句,查詢插入的數據,結果如圖9.4所示。 ――――――――――――――――――――――――――――――――――――― select * from tempuser.testtable; ――――――――――――――――――――――――――――――――――――― 【配套程序位置】:第9章/selecttesttable.sql。 對完成上述數據插入過程的PL/SQL程序的分析如表9.1所示。 表9.1 PL/SQL實例代碼分析程序代碼說明set serveroutput on答應服務器輸出declare定義部分標識maxrecords constant int:=100;定義maxrecords為整型常量100i int :=1;定義i為整型值變量,初值為1Begin執行部分標識for i in 1..maxrecords loopi從1循環到maxrecordsInsert into tempuser.testtable(recordnumber,currentdate) values (i,sysdate);向數據表中插入數據end loop;結束循環dbms_output.put_line('成功錄入數據!');顯示成功錄入數據信息commit;提交結果end;結束執行 表中的sysdate為系統時間函數;dbms_output為系統默認的程序包,put_line為包中定義的方法,功能是輸出信息;在Oracle中,所有對數據庫數據的更改并沒有直接操作數據庫,而是放在叫工作區的內存里,只有在commit語句執行后,才發生永久更改。