1. 程式人生 > >Oracle數據類型,函數與存儲過程

Oracle數據類型,函數與存儲過程

unicode 普通 覆蓋 表達式 必須 all 浮點數 pro int

字符串類型
固定長度:char nchar n 表示Unicode編碼
可變長度: varchar2 nvarchar2

數字類型:number(P,S)P:整數位數,S小數位數
integer 整數
BINARY_FLOAT 單浮點
BINARY_DOUBLE 雙浮點
FLOAT(N)浮點數 N表示精度
日期類型:DATE
TIMESTAMP


用戶定義函數是存儲在數據庫中的代碼塊,能夠把值返回到調用程序。調用時如同


系統函數一樣,如max(value)函數,當中,value被稱為參數。函數參數有3種類型。
IN 參數類型:表示輸入給函數的參數。
OUT 參數類型:表示參數在函數中被賦值,能夠傳給函數調用程序。


IN OUT參數類型:表示參數既能夠傳值也能夠被賦值。
1、語法格式:
SQL語法方式創建的語法格式為:

CREATE OR REPLACE FUNCTION function_name /*函數名稱*/
(
Parameter_name1,mode1 datatype1,            /*參數定義部分*/
Parameter_name2,mode2 datatype2,
Parameter_name3,mode3 datatype3

)
RETURN return_datatype                /*定義返回值類型*/
IS/AS
variable variableType; /*聲明變量*/
BEGIN
Function_body                  /*函數體部分*/
RETURN scalar_expression /*返回語句*/
END function_name;
說明:

function_name::用戶定義的函數名。

函數名必須符合標示符的定義規則。對其全部者來說,該名在數據庫中是唯一的。
parameter:用戶定義的參數。

用戶能夠定義一個或多個參數。
mode:參數類型。


datatype:用戶定義參數的數據類型。
return_type::用戶返回值的數據類型。


函數返回scalar_expression表達式的值。function_body函數體由pl/sql語句構成。
實例:
create or replace function getName(uid in integer) return varchar2
as
username varchar2(10)
begin
select name into username from users where id=uid;
return(username);
end getName;
註意:
(1)假設函數沒有參數,那麽函數名後不應該要括號;在調用的時候也不須要參數名

(2)創建函數的時候end後面一定要記得寫函數名

--沒有參數的函數
create or replace function get_user return varchar2 is
v_user varchar2(50);
begin
select username into v_user from user_users;
return v_user;
end get_user;



存儲過程
Oracle存儲過程基本的語法 存儲過程
  1 CREATE OR REPLACE PROCEDURE 存儲過程名 (參數名 類型 參數數據類型,...)
  2 IS
  3 BEGIN
  4 NULL;
  5 END;
行1:
  CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle數據庫去創建一個叫 做skeleton存儲過程, 如 果存在就覆蓋它;
行2:
  IS關鍵詞表明後面將尾隨一個PL/SQL體。


行3:
  BEGIN關鍵詞表明PL/SQL體的開始。
行4:
  NULL PL/SQL語句表明什麽事都不做,這句不能刪去,由於PL/SQL體中至少須要有一句;
行5:
  END關鍵詞表明PL/SQL體的結束

比如:
create or replace procedure pCountUsers(id integer,name varchar2)
as
begin
insert into users(id,name) values(id,name);
end ;

調用:call pCountUsers(2,‘KK‘);



函數與存儲過程的差別:
1. 返回值的差別,函數有1個返回值,而存儲過程是通過參數返回的,能夠有多個 或者沒有
2.調用的差別,函數能夠在查詢語句中直接調用,而存儲過程必須單獨調用.
函數普通情況下是用來計算並返回一個計算結果而存儲過程通常是用來完畢特定的數據操作(比方改動、插入數據 庫表或運行某些DDL語句等等)





















Oracle數據類型,函數與存儲過程