--ifelse
declare
v_num number;
begin
v_num := 100;
if v_num > 100 then
--elsif v_num > 50 then
--else
--end if;
end;
--帶引數儲存過程
create or replace procedure delete_subscriber(p_subid in number) is
v_mem varchar2(100) := '';
begin
--。。。
end delete_subscriber;
/--不帶引數儲存過程
create or replace procedure delete_subscriber is
v_mem varchar2(100) := '';
begin
--。。。
end delete_subscriber;
/--帶引數的函式
其中return字句是必須存在的,乙個函式如果沒有執行return字句就結束語句會發生錯誤
create or replace function get_productstr(p_subid in number, p_paydt date)
return varchar2 is
result varchar2(1024);
begin
merge_str := '';
for v_p in c_productinfo loop
merge_str := merge_str || v_p.productnamestr || '[r:' || v_p.monthfee || ']. ';
end loop;
return result;
end;
/--函式可以有預設值
create or replace function countrynumber(n_max number default 10000,n_min number default 10)
return varchar2 is
v_resultvalue vacharr2(50);
begin
return v_resultvalue;
end;
--異常處理例子
declare
v_num number(2) := 10;
v_zero number(2) := 0;
v_result number(5);
begin
v_result := v_num / v_zero;
exception
when zero_divide then
dbms_output.put_line('divide zero');
end;
異常說明:
dup_val_index:違反唯一性
login_denied: 登陸失敗,使用者名稱密碼錯誤
no_data_found:沒有發現資料存在
too_many_rows:資料行太多,
zero_divide:除數為0錯誤
value_error: 演算法或轉換錯誤
case_not_found: 在case語句中發現不匹配的when語句
declare
e_overnumber exception;
begin
if v_max < v_num then
-- deal....
raise e_overnumber;
end if exception
when e_overnumber then dbms_output.put_line("err msg");
end;
Oracle 常用指令碼
查詢當前連線數 select count from v session select username,machine,program,status,count machine as 連線數量 from v session where username cotsdev group by userna...
oracle 常用指令碼
substr 取得字串中指定起始位置和長度的字串 instr 判斷其是否含有指定的字元 replace 替換字元 create table table 1 as select from table 2 where 1 0 建表只複製表結構 表新增預設值 alter table table 1 mod...
ORACLE 常用管理指令碼
1 表空間統計 a 指令碼說明 這是我最常用的乙個指令碼,用它可以顯示出資料庫中所有表空間的狀態,如表空間的大小 已使用空間 使用的百分比 空閒空間數及現在表空間的最大塊是多大。b 指令碼原文 select upper f.tablespace name 表空間名 d.tot grootte mb ...