Oracle 語句 精,一起探討吧 http://my.oschina.net/58685474 Oracle --在sqlplus中用system/svse連接 然后授權(grant dba to scott) 再將權限授予svse用戶(grant connect,resource to svse)----建立表空間svsespace并建立svse用戶,建立如下表格 employee--建
Oracle 語句 精,一起探討吧--在sqlplus中用system/svse連接 然后授權(grant dba to scott) 再將權限授予svse用戶(grant connect,resource to svse) ----建立表空間svsespace并建立svse用戶,建立如下表格 employee --建立表空間svsespace create tablespace svsespace datafile 'd:\svse.dbf' size 5m; --建立svse用戶 create user svse identified by svse123 default tablespace svsespace; --建立如下表格 employee create table employee ( empno number(8) primary key, ename varchar2(20), job varchar2(20), sal number(8), deptno number(4) references dept(deptno) ); --建立如下表格Dept表 create table dept ( deptno number(4) primary key, dname varchar2(20), location varchar2(20) ); --為Dept表添加數據 insert into dept values(10,'ACCOUNTING','武漢'); insert into dept values(20,'NEW YORK','北京'); insert into dept values(30,'BOSTON','上海'); --為employee表添加數據 insert into employee values(10001,'史密斯','職員',1000,10); insert into employee values(10002,'瓊斯','分析員',3000,20); insert into employee values(10003,'愛德華','經理',5000,10); insert into employee values(10004,'福特','職員',1200,10); insert into employee values(10005,'艾倫','銷售員',10500,20); insert into employee values(10006,'凱文','職員',1250,30); insert into employee values(10007,'鮑勃','分析員',3200,30); insert into employee values(10008,'貝克','經理',11500,30); insert into employee values(10009,'斯蒂文','會計師',6000,10); insert into employee values(10010,'蘇珊','職員',600,20); select * from employee; select * from dept; --為employee表的empno字段創建序列 create sequence seq_no start with 10011 increment by 1; ----1.1 使用PLSQL實現數據的添加,要求接受輸入,然后將數據加到數據庫 declare myename employee.ename%type; myjob employee.job%type; mysal employee.sal%type; mydeptno employee.deptno%type; begin myename := '&請輸入員工姓名'; myjob := '&請輸入員工工作'; mysal := &請輸入員工工資; mydeptno := &請輸入部門編號; insert into employee values(seq_no.nextval,myename,myjob,mysal,mydeptno); dbms_output.put_line('添加成功'); end; --1.2 添加數據時,要求如果工資高于10000或低于800,則拋出異常,并打印異常信息 declare myename employee.ename%type; myjob employee.job%type; mysal employee.sal%type; mydeptno employee.deptno%type; errorsal exception; begin myename := '&請輸入員工姓名'; myjob := '&請輸入員工工作'; mysal := &請輸入員工工資; mydeptno := &請輸入部門編號; --判斷輸入的工資是否大于10000或者小于800,如果是則拋出異常 if mysal < 800 then raise errorsal; elsif mysal > 10000 then raise errorsal; else insert into employee values(seq_no.nextval,myename,myjob,mysal,mydeptno); dbms_output.put_line('添加成功'); end if; exception when errorsal then dbms_output.put_line('您輸入的工資范圍必須在800到10000之間'); end; --1.3 在該模式下,創建一個序列SEQ_ORDER,該序列從1開始,到9999為止,且不能循環計數 create sequence seq_order start with 1 increment by 1 maxvalue 9999 nocycle; --1.4 設計一個視圖,能顯示所有員工編號、名稱、工作、薪水、部門姓名,部門所在地。 --給svse用戶創建視圖的權限(在cmd中輸入grant create view to svse 賦予用戶svse創建視圖的權限) create or replace view myview as select a.*,location from employee a,dept b where a.deptno = b.deptno; --查看視圖 select * from myview; --2. 用存儲過程接受兩個數相除并且顯示結果,如果第二個數為0,則顯示消息“除數不能為0”。 create or replace procedure getNum(num1 number,num2 number) as num number; begin num := num1 / num2; end; --測試 declare num1 number; num2 number; num number := num1 / num2; begin num1 := &請輸入第一個數; num2 := &請輸入第二個數; if num2 = 0 then dbms_output.put_line('除數不能為0'); else getNum(num1,num2); dbms_output.put_line('所得值為;' || num1/num2); end if; end; --3. 編寫一個存儲過程,接受一個員工名,從emp表中顯示該雇員的工作崗位與薪水,若輸入的雇員名不存在,顯示“該雇員不存在”信息。 create or replace procedure getInfo(myno emp.empno%type,myjob out emp.job%type,mysal out emp.sal%type) as begin select job,sal into myjob,mysal from emp where empno = myno; dbms_output.put_line('獲得成功!'); end; --測試 declare mysal emp.sal%type; myjob emp.job%type; inputempno emp.empno%type; begin inputempno := &請輸入員工編號; getInfo(inputempno,myjob,mysal); dbms_output.put_line('員工工作:'||myjob ||' 員工工資:'||mysal); exception when no_data_found then dbms_output.put_line('您輸入的員工編號有誤,請核對后重新輸入...'); end; --4. 使用游標,接受一個部門號,從emp表中顯示該部門的所有雇員的姓名,工作和薪水(帶參數的游標) declare type mycurtype is record(myename emp.ename%type,myjob emp.job%type,mysal emp.sal%type); cursor mycur(mydeptno emp.deptno%type) is select ename,job,sal from emp where deptno = mydeptno; emprow mycurtype; theno emp.deptno%type; begin theno := &請輸入部門編號; dbms_output.put_line('
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com