給變數賦值用 := 賦值 。
連線兩個字串用 || 連線,用加號是不好使的!
str1:=str2||str3;
if 條件 then
—業務邏輯
elsif 條件 then
—業務邏輯
end if;
其中的elsif需注意,並不是elseif。
cursor c1 is select * from emp where deptno=10; —-給游標賦值
是is不是as!
游標是寫在declare下的。
關於游標與for的應用:
declare
cursor c1 is select * from emp where deptno=10;
----給游標賦值
v_obj emp%rowtype;
begin
for v_obj in c1 ---幫助我們做 open 和close 操作
loop
dbms_output.put_line(v_obj.empno || '==' || v_obj.ename);
end loop;
end;
帶引數的游標是在開啟游標時賦予引數值的:
declare -----引數的變數型別 不能寫長度
cursor c1(dno number) is select * from emp where deptno=dno;
----給游標賦值
v_obj emp%rowtype;
begin
open c1(20);
----開啟游標 並賦值
loop
fetch c1 into v_obj;
exit when c1%notfound; ----判斷游標為空後跳出
dbms_output.put_line(v_obj.empno || '==' || v_obj.ename);
end loop;
close c1 ;----關閉游標
end;
是預編譯到資料庫的一段業務邏輯**。
編寫格式:
create [or replace] procedure 儲存過程名稱 (引數名稱 [in]/out 引數的資料型別 ...)
as/is
---變數宣告
begin
----業務邏輯
end;
儲存過程的呼叫有兩種方式:
-------------呼叫---------------
---1. 不常用
call get_year_sals(7788);
---2. 常用
begin
get_year_sals(7782);
end;
1方式不常用是因為它接收不了out型別的引數。
格式:
create [or replace] function 儲存函式名稱(引數名稱 [in]/out 引數的資料型別 ...)return 返回值資料型別
as /is
begin
retrun 返回值;
end;
儲存函式與儲存過程功能都差不多,儲存函式的retrun返回值功能儲存過程可以通過out型別的引數達到。
在呼叫時,返回值必須接收!
儲存過程與儲存函式的區別:
——-1. 語法稍有區別
——-2. 儲存函式 能出現在sql語句中 儲存過程不能
------自定義單行函式
select e.*,get_year_sals_fun(e.empno) from emp e ;
觸發器:
格式:
create [or
replace] trigger 觸發的名稱
before/after
insert/update/delete
on 表
foreach
rowdeclare
begin
end;
在工作中一般用不到觸發器,因為功能太強大,風險性太大。
觸發器可以用來oracle的主鍵的自增賦值,其中用到了序列:
create
orreplace
trigger tri_id_emp
before
insert
on emp
foreach
rowdeclare
v_id number(10);
begin
select seq.nextval into v_id from dual;
:new.empno :=v_id;
end;
注:觸發器有兩個級別,
———–語句級觸發器 預設不寫指令
———–行級觸發器 如果要用 :old :new 必須寫 for each row
:old 表示執行修改語句時修改之前的記錄,並不是單一的字段,是整行記錄。
:new表示執行修改語句時修改之後的記錄
PL SQL儲存過程
or replace 建立或替換,如果存在就替換,不存在就建立create or replace procedure piscursor cisselect from dept2 for update beginfor row record in c loopif row record.deptno...
pl sql 儲存過程
在這段時間的開發中資料庫用的是oracle以前用的都是mssql它們的儲存過程的寫法還有一點不一樣,所以花了一天的時間看了看!以下是我做的乙個小例子!create table mytesttable id number,name varchar2 10 insert into mytesttable...
PL SQL 儲存過程
1 游標的設計開發 什麼是游標,為什麼用游標,怎樣使用游標 2 儲存過程 儲存過程的建立,引數使用,儲存過程的執行 3 儲存函式的設計 函式的建立,引數使用,函式的呼叫 4 包的設計與應用 什麼是包,包的建立及使用 儲存過程 建立語法 create or replace procedure proc...