pl/sql學習。缺點(移植性不好,如果換了資料庫則儲存過程不能用了)。
建立儲存過程。create or replace procedure szy_pro1(過程名) is
begin
--執行的操作,sql語句。
end;
呼叫儲存過程有兩種形式,1.exec 過程名(引數1,引數2 ....) 2.call 過程名(引數1,引數2 .....)
pl/sql部分相當於是塊的程式設計,塊有三部分構成:定義部分declare ,執行部分 begin ,例外處理部分 exception ;
例如 declare v_ename varchar2(5)
begin
select ename into v_ename from emp where empno=&no;
dbms_output.put line('雇員名字是'||v_ename);
end;
帶異常處理的
declare v_ename varchar2(5)
begin
select ename into v_ename from emp where empno=&no;
exception when no_data_found then
dbms_output.put line('沒有資料');
end;
儲存過程的 建立
(1)可以輸入雇員名稱,新工資,可修改雇員名稱
create procedure szy_pro1(spname varchar2,newsal number) is
begin
--執行部分
update emp set sal=newsal where ename=spname;
end;
函式,是返回特定資料。函式裡面必有return語句。
(2)該函式返回固定員工的工資
create function 函式名(name varchar2) return number is mysal number(7,2);
begin
select sal into mysal from emp where ename =name;
end;
然後便是這個函式的呼叫,
var a number;
call 函式名('scott') into:a;
包,包用於在邏輯上組合過程和函式,他由包規範和包體兩部分組成
包的建立
create or replace package szy_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
包只有含函式和過程的說明,但沒有實現。包體便是實現包裡的函式和過程。
建立包體 create package body szy_package is
procedure update_sal(引數) is
begin
end;
annual_income(引數) is
begin
end;
如何呼叫包體的過程或則函式,則 包名.函式名/過程名
call szy_package.update_sal(引數...);
oracle資料庫學習
最近在做使用者資料篩選的時候發現使用者資料載入和查詢比較慢,所以,參考網上資料進行了寫小優化,在資料庫中執行快了那麼一些,在這裡記錄下相關命令。做法 建立字段索引,使用instr函式。1 使用instr代替like 開頭會導致索引失效 instr的基本用法 select count from 表名 ...
Oracle資料庫學習
本章學習要點 1 子查詢 將乙個查詢包含到另乙個查詢中 1 如 emp表中,查詢與 scott 在同乙個部門的雇員資訊 原來我們是先查詢scott所在的部門即 select deptno from emp where ename scott 然後通過返回的部門號在查詢員工資訊 select from...
Oracle資料庫學習
本章學習要點 概念 序列是用於生成唯 一 連續序號的物件序列可以是公升序的,也可以是降序的使用create sequence語句建立序列 語法 create sequence 序列化的名稱 start with 10 開始10 increment by 10 每次步長10 maxvalue 2000...