1.建立表:
create table t_dept(
deptno integer key primary,
dname varchar2(10),
loc varchar2(50)
);
2.插入資料:
insert into t_dept(deptno,dname,loc) values(10,'研發部','北京');
insert into t_dept(deptno,dname,loc) values(20,'開發部','天津');
insert into t_dept(deptno,dname,loc) values(30,'財務部','上海');
3.用儲存過程插入資料
--建立儲存過程,並設定引數d_name,loc預設為"new york
create or replace procedure new_dept(d_name in varchar2,loc in varchar2 :='深圳')
is dept_no interger; --定義變數
begin
--先得到部門的最大編號
select max(deptno) into dept_no from t_dept; --把最大編號賦值給變數dept_no
--在最大部門編號的基礎上加乙個值10
dept_no :=dept_no + 10;
--新增資料
insert into t_dept values(dept_no,d_name,loc);
exception
when others then
dbms_output.put_line('新增部門失敗');
end;
4.呼叫儲存過程
--因為儲存過程要傳遞引數,所以需要先定義引數
declare
dname varchar2(20) :='行政部';
loc varchar2(30) :='&請輸入位址';--執行後自己手動輸入
begin
new_dept(dname,loc);
end;
當然,第四步的時候,我們如果不設定loc,預設位址是『深圳』。或者直接在定義引數的時候輸入位址,無需執行後自己手動輸入;&表示執行後手動輸入。
5.執行結果:
select * from t_dept;
/*新增了乙個id為:40 行政部 長沙
deptno dname loc
10 研發部 北京
20 開發部 天津
30 財務部 上海
40 行政部 長沙
*/
6.刪除儲存過程:
drop procedure new_dept;
補充:
is as 在儲存過程中沒有區別,檢視中只用as不能用is;游標中只能用is,不能用as。
在select into 的時候有兩個異常需要關注 too_many_rows 、no_date_found。
declare
dept_no integer;
begin
select deptno into dept_no from t_dept;--deptno有四個值
dbms_output.put_line(dept_no);
exception
when too_many_rows then
dbms_output.put_line("取出的編號多於乙個!");
end;
--no_data_found 沒有取出乙個數值
04 Oracle 常用操作
1 建立表空間 設定自動擴充套件autoextend on next 100m create tablespace xx datafile d test test.dbf size 1g autoextend on next 100m maxsize unlimited 2 建立使用者 建立使用者 ...
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...
ORACLE儲存過程
自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...