以下的文章主要是介紹oracle
游標使用,以下就是具體方案的描述,希望在你今後的學習中會有所幫助。首先我們要用到的是select
語句,其用於從資料庫中查詢資料,當在pl/sql
中使用select
語句時,要與into
子句一起使用,查詢的返回值被賦予into
子句中的變數,變數的宣告是在delcare
中。select into
語法如下:
1.
select [distict|all]
2.
into (variable[,variable,...] |record)
3.
from [alias]
4.
where............
pl/sql
中select
語句只返回一行資料。如果超過一行資料,那麼就要使用顯式oracle
游標(對游標的討論我們將在後面進行),into
子句中要有與select
子句中相同列數量的變數。into
子句中也可以是記錄變數。
%type
屬性在pl/sql
中可以將變數和常量宣告為內建或使用者定義的資料型別,以引用乙個列名,同時繼承他的資料型別和大小。這種動態賦值方法是非常有用的,比如變數引用的列的資料型別和大小改變了,如果使用了%type,
那麼使用者就不必修改**,否則就必須修改**。
例:1.
v_empno scott.emp.empno%type;
2.
v_salary emp.salary%type;
不但列名可以使用%type,
而且變數、oracle
游標、記錄,或宣告的常量都可以使用%type
。這對於定義相同資料型別的變數非常有用。
1.
delcare
2.
v_a number(5):=
10;
3.
v_b v_a%
type:=15
;
4.
v_c v_a%type;
5.
begin
6.
dbms_output.put_line
7.
('v_a
='||v_a||'
v_b='||v_b||'
v_c='||v_c);
8.
end
9.
sql>/
10.
v_a=
10v_b=15
v_c=
11.
pl/sql procedure successfully completed.
12.
sql>
其他dml
語句其它運算元據的dml
語句是:insert
、update
、delete
和lock table,
這些語句在pl/sql
中的語法與在sql
中的語法相同。我們在前面已經討論過dml
語句的使用這裡就不再重複了。在dml
語句中可以使用任何在declare
部分宣告的變數,如果是巢狀塊,那麼要注意變數的作用範圍。
例:1.
create or replace procedure fire_employee (pempno in number)
2.
as
3.
v_ename emp.ename%type;
4.
begin
5.
select ename into v_ename
6.
from emp
7.
where
empno
=p_empno
;
8.
insert into former_emp(empno,ename)
9.
values (p_empno,v_ename);
10.
delete from emp
11.
where
empno
=p_empno
;
12.
update former_emp
13.
set
date_deleted
=sysdate
14.
where
empno
=p_empno
;
15.
exception
16.
when no_data_found then
17.
dbms_output.put_line('employee number not found!');
18.
end
dml語句的結果
當執行一條dml
語句後,dml
語句的結果儲存在四個oracle
游標屬性中,這些屬性用於控制程式流程或者了解程式的狀態。當執行dml
語句時,pl/sql
開啟乙個內建游標並處理結果,游標是維護查詢結果的記憶體中的乙個區域,游標在執行dml
語句時開啟,完成後關閉。隱式游標只使用sql%found,sql%notfound,sql%rowcount
三個屬性.sql%found,sql%notfound
是布林值,sql%rowcount
是整數值。
sql%found
和sql%notfound
在執行任何dml
語句前sql%found
和sql%notfound
的值都是null,
在執行dml
語句後,sql%found
的屬性值將是:
. true :insert
. true :delete
和update
,至少有一行被delete
或update.
. true :select into
至少返回一行
當sql%found
為true
時,sql%notfound
為false
。sql%rowcount
在執行任何dml
語句之前,sql%rowcount
的值都是null,
對於select into
語句,如果執行成功,sql%rowcount
的值為1,
如果沒有成功,sql%rowcount
的值為0
,同時產生乙個異常no_data_found.
sql%isopen
sql%isopen
是乙個布林值,如果游標開啟,則為true,
如果oracle
游標關閉,則為false.
對於隱式游標而言sql%isopen
總是false
,這是因為隱式游標在dml
語句執行時開啟,結束時就立即關閉。
MQ使用經驗總結
mq使用經驗總結 mq經驗總結 首先了解什麼是mq?mq的作用是什麼?mq是通訊中介軟體。他的作用是省去開發人員開發通訊工具的時間,節省開發成本,提高開發效 率。mq的使用,如何安裝mq?根據以往的經驗,win版的mq比較容易安裝,傻瓜式,一路next就可以。aix版本的用 itty安裝。linux...
Less 使用 經驗總結
案例一 cons 80px myloop counter,i 0 when i counter out ptzcontrol over myloop counter,i 1 next iteration myloop 9 生成的css檔案如下 用sublime的less2css外掛程式自動生成的 s...
sourceTree使用經驗總結
1.公司的git 使用者名稱 yihn 密碼 略 2.安裝git客戶端 sourcetree 3.可以連線到你託管在bitbucket stash microsoft tfs或github中的 庫 4.設定 新增遠端倉庫 5.工具 選項新增預設使用者資訊,電子郵件,ssh秘鑰等 6.一般建立本地gi...