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...