ORACLE資料庫學習03

2021-06-14 18:14:57 字數 1685 閱讀 2439

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...