1、把本機Oracle使用者sys、system密碼全部改為oracle;
2、建立一個本地管理的資料表空間TS_ESTORE,並指定區(extent)大小為128K,檔案的初始大小為1M,自動擴充,每次擴充為500k。
3、建立一個使用者estore,設定密碼為estore,預設資料表空間為TS_ESTORE。
4、為使用者eStore設定下列許可權:
ü 串連資料庫
ü 建立和執行PL/SQL程式
ü 可以建立、修改、刪除任意表
ü 可以建立、刪除任意視圖
5、用ESTORE使用者登入資料庫,建立使用者資訊表usersü 使用者ID(自增長數值型、主鍵)--建立一個S_USERS序列,該值從序列中獲得
ü 使用者名稱稱(字元型,30位)
ü 使用者密碼(字元型,8位)
ü 聯絡地址(字元型,80位)
ü EMAIL(郵件,60位)
ü 建立日期(日期型,預設為當前日期)
6、用下列資訊初始化該使用者資訊表users:
ü 張三,zhang3,師大,zhang3@sina.com
ü 李四,li4,師大,li4@sina.com
ü 王五,wang5,師大,li4@sina.com
7、編寫一個顯式遊標,分別用WHILE、LOOP迴圈將使用者資訊表users中的所有記錄在控制台列印出來。
8、使用FOR 語句的隱式遊標實現第7題的功能。(提示:直接在FOR語句的IN中編寫SQL語句)。
9、編寫一個預存程序P_Login,根據輸入參數userId,password實現以下邏輯:
ü 判斷使用者資訊表USERS中userID=輸入的userId參數的使用者是否存在(提示:用select count(1) into 變數,來判斷。)
ü 如果使用者不存在,在控制台列印出:使用者不存在
ü 判斷使用者資訊表中,password是否正確
ü 如果不正確在控制台中列印出:使用者密碼錯誤
要求:需要用EXCEPTION處理異常資訊。
10、 建立一個表:USER_LOG,包含以下欄位:
ü 操作描述(提示:指insert、delete或update)
ü 使用者ID
ü 舊的使用者名稱稱(字元型,30位)
ü 新的使用者名稱稱(字元型,30位)
ü 更新時間(date型)
編寫一個行級觸發器,記錄對學生資訊表的所有更新操作(insert、delete、update),並將更時間、學生姓名、學生ID記錄到USER_LOG表中。
ㄗs晨星oО 15:07:23
上面是問題
ㄗs晨星oО 15:07:42
1.---
alter user sys identified by orcale;
alter user system identified by orcale;
2.---
create tablespace TS_ESTORE
datafile 'filespec' size 1M
autoextend on next 500K
extent management local uniform size 128k;
3.---
create user estore identified by estore
default tablespace TS_ESTORE;
4.---
grant connect,RESOURCE 8 privs,create any table,alter any table,delete any table,
create any view,delete any view to eStore;
--RESOURCE 8 privs 具有程式開發最的許可權 (??)
5.---
connect estore/estore
create table users (
id number not null primary key,
username varchar2(30),
userpass varchar2(8),
useraddr varchar2(80),
useremail varchar2(60),
created date default sysdate);
create sequence S_USERS start with 1 increment by 1;
create or replace triggrt users_id_trigger
before insert on users for each now
declare
next_no number;
begin
select S_USERS.nextval into next_no from dual;
:new.id :=next_no;
end;
6.---
insert into users (username,userpass,useraddr,useremail) values ("張三","zhang3","師大","zhang3@sina.com");
insert into users (username,userpass,useraddr,useremail) values ("李四","li4","師大","li4@sina.com");
insert into users (username,userpass,useraddr,useremail) values ("王五","wang5","師大","li4@sina.com");
7.---
set serveroutput on
declare
uid users.id%type;
uname users.username%type;
upass users.userpass%type;
uaddr users.useraddr%type;
umail users.useremail%type;
ucreatedtime users.created%type;
cursor mycur is select * from users;
begin
open mycur;
fetch mycur into uid,uname,upass,uaddr,umail,ucreatedtime;
dbms_output.put_line("loop迴圈輸出:");
loop
dbms_output.put_line(uid||" "||uname||" "||upass||" "||uaddr||" "||umail||" "||ucreatedtime);
exit when mycur%notfound;
end loop;
close mycur;
open mycur;
fetch mycur into uid,uname,upass,uaddr,umail,ucreatedtime;
dbms_output.put_line("while迴圈輸出:");
while mycur%found loop
dbms_output.put_line(uid||" "||uname||" "||upass||" "||uaddr||" "||umail||" "||ucreatedtime);
end loop;
close mycur;
end;
8.---
set serveroutput on
declare
begin
dbms_output.put_line("for語句隱式遊標迴圈輸出:");
for my_record in (select * from users) loop
dbms_output.put_line(my_record.uid||" "||my_record.uname||" "||my_record.upass||" "||my_record.uaddr||"
"||my_record.umail||" "||my_record.ucreatedtime);
end loop;
end;
9.---
set serveroutput on
create or replace P_Login (userId in users.id%type,password in users.userpass%type)
as
user_count number;
user_not_exist exception;
user_pass_error exception;
begin
select count(1) into user_count from users where id = userId;
if user_count = 0 then raise user_not_exist;
elsif user_count<>0 then
select count(1) into user_count from users where id = userId and userpass = password;
if user_count = 0 then raise user_pass_error;
elsif user_count <> 0 then
dbms_output.put_line("使用者名稱密碼正確!!");
endif;
endif;
exception
when user_not_exist then dbms_output.put_line("使用者不存在");
when user_pass_error then dbms_output.put_line("使用者密碼錯誤");
end;
10.---
create table USER_LOG
(op varchar2(10),
id number,
oldid number,
newid number
updatedtime date);
create sequence S_USER_LOG start with 1 increment by 1;
create or replace triggrt users_op_trigger
after insert or update or delete on users
for each now
begin
if inserting then
insert into USER_LOG values ("insert",S_USER_LOG.nextval,old.id,new.id,sysdate);
elsif updating then
insert into USER_LOG values ("update",S_USER_LOG.nextval,old.id,new.id,sysdate);
elsif deleting then
insert into USER_LOG values ("delete",S_USER_LOG.nextval,old.id,old.id,sysdate);
endif;
end;