oracle測試小例子 你會幾個

2021-06-02 09:50:00 字數 4442 閱讀 2620

1.建立乙個名稱為test的使用者,並授權其連線資料庫和建立表的許可權,同時授權訪問另乙個使用者scott的表emp的許可權

create user test identified by 111;

grant connect to test;

grant create table to test;

grant select on scott.emp to test;

2. 針對scott使用者emp表編寫語句,只有當最低工資少於2000而且最高工資超過4000時,才顯示部門id以及該部門的最低工資和最高工資

select deptno,min,max from(select min(sal) min,max(sal) max,deptno from emp group by deptno)

where min<2000 and max >4000;

3. 公司決定發年終獎,根據職員的所在部門來計算,如果部門為10的,獎金為2000,部門為20的,獎金為1500,部門為30的獎金為1000,其他的獎金為500。編寫乙個過程來完成

create or replace procedure pro_addaward

asbegin

update emp set comm=0 where comm is null;

update emp set comm=comm+decode(deptno,10,2000,20,1500,30,1000);

end;

4. 編寫**,提示使用者輸入姓名。**應檢查使用者輸入的姓名的長度,如果長度小於2,則**應引發異常並顯示訊息「請輸入正確的姓名」。否則應顯示訊息「歡迎」。

create or replace function fun_login

(

--引數不能指定長度!!!!!!!!!

username varchar2

)return varchar2--必須有return

asbegin

if(length(username)>2) then--必須有then

return '歡迎';

else

end if;

end;

declare

name varchar2(50):='&name';

begin

dbms_output.put_line(fun_login(name));--呼叫函式

end;

5.編寫**,提示使用者輸入要檢視的哪個表的記錄,如果使用者輸入「e」,則顯示emp表中empno,ename,job和sal列的值;如果使用者輸入「d」,則顯示dept表中的

deptno,dname和loc列的值

create or replace procedure pro_showinfo

(word varchar2,

cur_result out sys_refcursor)as

v_sql varchar2(500);

begin

case word

when 'e' then

open cur_result for select empno,ename,sal,job from emp;

when 'd' then

open cur_result for select deptno,dname,loc from dept;

else

select * from emp;

end case;

end;

declare

type emp_record is record

(empno emp.empno%type,

ename emp.ename%type,

sal emp.sal%type,

job emp.job%type

);type dept_record is record

(deptno dept.deptno%type,

dname dept.dname%type,

loc dept.loc%type

);cur_word sys_refcursor;

dept_rec dept_record;

emp_rec emp_record;

word varchar2(10):='&word';

begin

pro_showinfo(word,cur_word);

case word

when 'e' then

dbms_output.put_line('empno ename sal job');

loop

fetch cur_word into emp_rec;

exit when cur_word%notfound;

dbms_output.put_line(emp_rec.empno||' '||emp_rec.ename||' '||emp_rec.sal||' '||emp_rec.job);

end loop;

when 'd' then

dbms_output.put_line('deptno dname loc');

loop

fetch cur_word into dept_rec;

exit when cur_word%notfound;

dbms_output.put_line(dept_rec.deptno||' '||dept_rec.dname||' '||dept_rec.loc);

end loop;

else

dbms_output.put_line('不存在!');

end case;

close cur_word;

end;

6.編寫乙個程式包,包有兩個過程和乙個函式,第乙個過程根據職員編號列印職員姓名,第二個過程根據職員編號列印職員薪水,函式根據職員編號返回職員的入職時間。(此處只完成:第乙個過程根據職員編號列印職員姓名,其它例似)

create or replace package emp_package

isprocedure proc_printnamebyempno

(param_empno number

);--分號不能掉!!!

end emp_package;

create or replace package body emp_package

asprocedure proc_printnamebyempno

(param_empno number

)as--這裡不是;了。

ename emp.ename%type;

empno emp.empno%type;

begin

select a.ename into ename from emp a where a.empno=param_empno;

dbms_output.put_line('編號為:'||param_empno||'的員工姓名為:'||ename);

exception--捕獲異常

when no_data_found then

dbms_output.put_line('不存在編號為'||param_empno||'的員工!');

end;

end emp_package;

declare

empno varchar2(50):='&empno';

begin

emp_package.proc_printnamebyempno(empno);--呼叫函式

end;

7.建立乙個觸發器,無論使用者插入新記錄,還是修改emp表的job列,都將使用者指定的job列的值轉換成大寫

create or replace trigger tr_upper_job

before insert or update on emp

for each row

begin

:new.job:= upper(:new.job);--此處用select into 和set會出錯。直接賦值更為簡單。

end;

8.將使用者scott的所有物件匯入到使用者test下。

exp scott/111@orcl file=d:\daochu.dmp full=y

imp scce/111@orcl file=d:\daochu.dmp fromuser=scott touser=scce ignore=y constraints=y grants=y

oracle測試小例子 你會幾個

1.建立乙個名稱為test的使用者,並授權其連線資料庫和建立表的許可權,同時授權訪問另乙個使用者scott的表emp的許可權 create user test identified by 111 grant connect to test grant create table to test gra...

幾個js的小例子

1 js的作用域,window物件 if a in window alert a 1 js的作用域是由函式劃分的 2 js的執行順序 var a 1,b function a x alert a 1 3 js引數 arguments 的含義 function b x,y,a b 1,2,3 10 4...

windows程式設計幾個小例子(一)

近段時間致力於windows程式設計開發,現將測試的幾個小例子貼出來與大家分享一下。例子1 隱藏開始選單 hwnd hwnd hwnd getdlgitem findwindow taskbar,null id startbutton if hwnd null return showwindow h...