程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> [獨孤九劍]Oracle知識點梳理(六)數據庫常用對象之Procedure、function、Sequence,oracleprocedure

[獨孤九劍]Oracle知識點梳理(六)數據庫常用對象之Procedure、function、Sequence,oracleprocedure

編輯:Oracle教程

[獨孤九劍]Oracle知識點梳理(六)數據庫常用對象之Procedure、function、Sequence,oracleprocedure


本系列鏈接導航:

[獨孤九劍]Oracle知識點梳理(一)表空間、用戶

[獨孤九劍]Oracle知識點梳理(二)數據庫的連接

[獨孤九劍]Oracle知識點梳理(三)導入、導出

[獨孤九劍]Oracle知識點梳理(四)SQL語句之DML和DDL

[獨孤九劍]Oracle知識點梳理(五)數據庫常用對象之Table、View

[獨孤九劍]Oracle知識點梳理(六)數據庫常用對象之Procedure、function、Sequence

[獨孤九劍]Oracle知識點梳理(七)數據庫常用對象之Cursor

[獨孤九劍]Oracle知識點梳理(八)常見Exception 

[獨孤九劍]Oracle知識點梳理(九)數據庫常用對象之package

[獨孤九劍]Oracle知識點梳理(十)%type與%rowtype及常用函數

5.3、procedure的操作

5.3.1、創建存儲過程

 1 create or replace procedure proc_GetPerson(argName in varchar2,argMsg out varchar2,argTable out pkg.RefCur)
                                  --參數,不需要定義長度 2 as 3   vName varchar2(64);-- 定義變量,要設置長度 4 begin 5   vName:=argName; --賦值,每條語句要以分號結束 6   open pke.RefCur is select * from person where name like vName||'%';--將查詢結果記錄到返回游標中 7   --當然,還可以進行其他復雜的判斷,轉換等操作 8   argMsg:='正常'; 9   commit; 10 11   Exception 12     when others then argMsg='異常'; 13       rollback; --如果之前執行的是事務性的語句,有必要保證數據安全 14 end proc_GetPerson;

5.3.2、刪除存儲過程

drop procedure pro_GetPerson;

5.4、function的操作

5.4.1、創建函數

  • 帶in參數
1 create or replace function fun_GetPersonName(argName in varchar2,argGender in varchar2) return varchar2
2 as
3   Result varchar2(64); --定義變量 
4 begin
5   select name into Result from person where name =argName and gender=argGender and rownum=1;
6   return Result;--返回值 
8 end fun_GetPersonName;
  • 帶out參數
1 create or replace function fun_GetPersonName(argName in varchar2,argGender out varchar2) return varchar2
2 as
3   Result varchar2(64); --定義變量 
4 begin
5   select name,gender into Result,argGender from person where name =argName and rownum=1;
6   return Result;--返回值
7 end fun_GetPersonName;

5.4.2、刪除函數

drop function fun_GetPersonName;

5.5、sequence的操作

  在Oracle中sequence就是序號,每次取的時候它會自動增加;sequence與表沒有關系。
  首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權限。

5.5.1、創建序列

1 create sequence seqPersonID
2   increment by 1 --每次加1
3   start with 1 --序列從1開始計數
4   nomaxvalue --不設置最大值
5   nocycle --一致累加,不循環
6   cache 10; 設置緩存cache個序列,如果系統down掉了,或者其他情況會導致序列不連續,
7   --nocache; --不是最緩存

5.5.2、得到Sequence的值

  currVal:返回sequence的當前值
  nextVal:返回sequence下一個值

1 select seqPersonID.CurrVal from dual; --得到序列的當前值,必須在調用過NextVal之後才能使用,否則報錯
2 select seqPersonID.NextVal from dual; --得到序列的下一個值,如果是第一次使用,則返回創建時設置的初始值

  在Sql語句中可以使用sequence的地方: 

  如在插入語句中

insert into person(id,name)values(seqPersonID.Nextval,'sequence 插入測試');

5.5.3、修改序列

  可以修改出start之外的所有sequence參數,如果想修改start的值,必須先drop 再重新創建

alter sequence seqPersonID maxValue 99999999;

5.5.4、刪除序列

drop sequence seqPersonID;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved