一、pl/sql 塊
塊定義語法:
declare
/*定義部分——定義常量、變數、複雜資料型別、游標
*/begin
/*執行部分——pl/sql語句和sql語句
*/exception
/*異常處理部分——處理執行錯誤
*/end;
注:pl/sql中結束輸入使用『/』字元
dbms_output.put_line(「輸出的字串內容」);
dbms_output是oracle提供的系統包;put_line 是該包中的過程,用於輸出字串資訊。當使用dbms_output包時必須要先啟用伺服器輸出
啟用伺服器輸出語句: set serveroutput on
示例:declare
str varchar(5) --變數的定義
begin
select name into str from emp --into是將name的值賦值給str
where empno=$no; --$no是替代變數
exception
when no_data_found then --pl/sql預定義的異常型別
dbms_output.put_line(「輸出的字串內容」);
end;
變數定義語法:
變數名 [constant] 資料型別 [not null] [:=|default 預設值或函式]
--constant表示常量;
--:=設定預設值
%type屬性
示例:name emp.ename%type --name與emp表中ename列的型別和長度相同
*** name%type --***與name型別和長度相同
%rowtype屬性
語法:變數名 表名%rowtype
示例:str t1%rowtype
--str變數對應t1表中所有列,並且該表中的所有列的型別與長度相同
pl/sql中使用的操作符
:= --賦值操作符
=> --關聯操作符
|| --連線操作符
pl/sql游標
游標定義語法:
cursor 游標名 is sql語句
游標名%isopen 判斷游標是否已經開啟
游標名%found sql語句有作用行市,其屬性值為true;
游標名%notfound sql語句沒有作用行市,其屬性值為true;
游標名%rowcount 返回sql語句所作用的總行數
注:游標名預設為『sql』
二、pl/sql控制語句
1、分支語句
if 條件 then 執行操作
elseif 條件then 執行操作
else 執行操作
end if;
2、多重分支語句
case 表示式
when 要判斷的值 then 執行操作
when 要判斷的值 then 執行操作
else 執行操作
end case;
3、迴圈語句一
while 條件 loop
執行操作···
end loop;
4、迴圈語句二
for 變數 in [reverse] 起點值 ..終點值 loop
執行操作
end loop;
注:reverse表示由終點值到起點值迴圈; ..是固定格式;
三、 儲存過程
建立過程語法:
create [or replace] procedure procedure_name
[ (argment [ ] type,
argment [ ] type
《型別.變數的說明》
( 注: 不用 declare 語句 )
begin
《執行部分》
exception
《可選的異常處理說明》
end;
l 這裡的in表示向儲存過程傳遞引數,out表示從儲存過程返回引數。而in out 表示傳遞引數和返回引數;
l 在儲存過程內的變數型別只能指定變數型別;不能指定長度;
l 在as或is 後宣告要用到的變數名稱和變數型別及長度;
l 在as或is 後宣告變數不要加declare 語句。
示例:create or replace procedure modetest (
p_inparameter in number,
p_outparameter out number,
p_inoutparameter in out number) is
過程體v_localvariable number; --定義變數
begin
/* 分配p_inparameter給v_localvariable.;p_inparamete表示值*/
v_localvariable := p_inparameter; -- 合法
/* 分配 7 給 p_inparameter. 這是非法的,因為宣告是in ;p_inparamete表示值,即值不能給值*/
p_inparameter := 7; -- 非法
/* 分配7給p_ outparameter. 這是合法的,因為宣告是out;p_ outparameter表示變數 */
p_outparameter := 7; -- 合法
/* 分配 p_outparameter 給 v_localvariable.這是非法的,因為宣告是out;p_ outparameter表示變數,即變數不能給變數*/
v_localvariable := p_outparameter; -- 非法
/* 分配 p_inoutparameter 給 v_localvariable. 這是合法的,因為宣告是in out */
v_localvariable := p_inoutparameter; --合法
/*分配 7 給 p_inoutparameter. 這是合法的,因為宣告是in out */
p_inoutparameter := 7; -- 合法
end modetest;
/過程的呼叫:
exec [ute] 過程名 (引數1 ,引數2…);
四、函式
建立語法:
create [or replace ] function 函式名
[(引數1 [in | out | in out] 引數型別,引數2 [in | out | in out] 引數型別,……)]
return 資料型別
is | as
begin
執行部分
exception
異常處理部分
end [函式名];
五、 包
1、 包規範建立語法
create [or replace] package 程式包名
is | as
procedure 過程名(過程引數列表);
function 函式名(函式引數列表);
……end 程式包名;
2、 包體建立語法
create [or replace] package body 程式包名
is | as
之前定義的函式、過程的具體實現部分
end 程式包名;
3、包的呼叫
exec 程式包名.過程名(引數列表);
Oracle PL SQL學習筆記
游標分類 游標概念 與游標相關的語法型別 建立游標 如同宣告任何其他變數一樣 cursor cursor name is sql statement 開啟與關閉游標 開啟游標 open cursor arg arg 關閉游標 close cursor 取資料 fetch cursor into va...
Oracle PL SQL 學習筆記(四)
3.2定義並使用變數 pl sql資料型別 標量 scalar 型別 復合 composite 型別 參照 reference 型別和lob larger object 型別。3.2.1標量變數 1.常用標量型別 1 varchar2 n 定義可變長度的字串,長度 4000位元組 2 char n ...
Oracle PL SQL 學習筆記(二)
二 pl sql 開發工具 2.1sql plus 1.在命令列執行sql plus 語法 sqlplus username password server 其中,username使用者名稱,password密碼,server指定主機字串。當連線到本地資料庫時,不需要提供網路服務名。d sqlplu...