pl/sql
pl
/sql優點:
1 .良好的互動性
2 .無法替代的觸發器功能
3 .自動優化(尤其針對余大迴圈,
pl
/sql效能更優)
pl
/sql塊的結構
declare
宣告部分: 在此宣告pl/sql用到的變數,型別及游標,以及區域性的儲存過程和函式
begin
執行部分: 過程及sql 語句 , 即程式的主要部分 【執行部分是必須的】
exception
執行異常部分: 錯誤處理
end;
開啟輸出緩衝區命令:
set
serveroutput
on;
pl
/sql示例:
begin
dbms_output.put_line(
'hello world!'
);
end;
declare語句中宣告的變數,不要與表名或者列名重複,oracle在執行時會優先與表名和列名匹配從而替代後執行。
pl
/sql中表名列名不能使用變數進行指定。 【oracle只會將=右邊的變數進行替換】
記錄型別:
type
record_type
is
record(
變數1 型別 [
not
null
] [:= 預設值],
變數2 型別 [
not
null
] [:= 預設值],
. . . . . .
變數n 型別 [
not
null
] [:= 預設值] );
記錄型別使用的例子:
declare
type
test_rec
is
record(
code
varchar2
( 10
),name
varchar2
( 30
) not
null
:=』a book』);
v_book test_rec;
v_book2 test_rec;
begin
v_book.code :=』
123』;
v_book.name :=』 c++ programming』;
dbms_output.put_line(v_book.code||v_book.name);
select
bookcode,bookname
into
v_book2.code,v_book2.name
from
bookinfo
where
id
= 1
;end;
使用%type
: 定義乙個變數,其資料型別與已經定義的某個資料變數的型別相同,或者與資料庫表的某個列的資料型別相同,這時可以使用%
type。
例:
declare
-- 用 %type 型別定義與表相配的字段
type
t_record
is
record(
t_no emp.empno%
type,
t_name emp.ename%
type,
t_sal emp.sal%
type
);使用%
rowtype
:返回乙個記錄型別, 其資料型別和資料庫表的資料結構相一致。
例:
declare
emp1 emp%
rowtype
begin
select
id
,name
into
emp1
where
id=
3 ;
end;
運算子和表示式: 略
簡單迴圈:
(a). loop迴圈
loop
要執行的語句;
exit
when
《條件語句》;
/*條件滿足,退出迴圈語句*/
end
loop;
例:
declare
int
number
( 2
) :=0;
begin
loop
int:=
int+
1 ;
dbms_output.put_line(
'int 的當前值為:'
||int);
exit
when
int=
10;
end
loop;
end;
(b). while迴圈
while
《布林表示式》
loop
要執行的語句;
exit
when
[條件];
----條件滿足,提前退出迴圈
end
loop;
(c).數字式迴圈
for
迴圈計數器
in[
reverse
] 下限 .. 上限
loop
要執行的語句;
end
loop;
例: fork
in
1 ..10
loop
dbms_output.put_line(i);
end
loop
;
標號和goto:
goto
label;
. . . . . .
<<
label
>>
/*標號是用<< >>括起來的識別符號 */
oracle 學習筆記 2
oracle 表管理 表名必須以字母開頭,不能超過30個字元,不用保留字,只能使用如下字元a z,a z,0 9,等。oracle資料型別 字元型char 定長 最大2000字元,效率高,查詢速度很快。char 10 不足10的用空格補齊。varchar2 變長 最大4000字元 clob 字元型大...
Oracle 學習筆記2
如何檢視一台機器的windows server 2003 系統是32位還是64位 開始 執行 cmd systeminfo 檢視資料庫是否處於force logging 模式?select force logging from v database 查詢oracle server端 的字符集?sel...
Oracle學習筆記 2
個人部落格 修改表中的列資訊 alter table vendor master modify vencode varchar 20 給表中列新增乙個預設值約束 alter table mytable modify name varchar2 20 default abc 為現有表中的列新增乙個主鍵...