日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于oracle 的PL/SQL编程 -变量使用

發布時間:2025/7/14 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于oracle 的PL/SQL编程 -变量使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1. 需要開啟的服務:? 本機安裝的oracle ,默認是開機啟動服務的,開機時間太慢,關閉了,需要手動打開:

OracleDBConsoleorcl

OracleOraDb10g_home1iSQL*Plus

OracleOraDb10g_home1TNSListener

OracleServiceORCL???這個后面的ORCL就是數據庫名字,官方術語叫做數據庫sid

2.打開PL/SQL工具,用戶名scott 登陸sid為ORCL的數據庫,?密碼 tiger

3.打開一個測試窗口,如下

1 -- Created on 2018/6/3 by ADMINISTRATOR 2 declare 3 -- 聲明本地變量的地方,包括游標(結果集類型變量),如果沒有,declare可以去掉 4 --相當于java的 public class A{} 5 i integer; 6 begin 7 -- 執行部分 8 --相當于Java的public static void main(String[] args) 9 --異常處理 10 end;

4.打印helloworld

結果如下:

dbms_outputoracle的程序包,put_line()是調用的方法

在命令行中打印:需要先設置 set serveroutput on ,才會將打印語句打印出來,否則只執行不打印。

?

?

5.?PLSQL變量的使用:

PLSQL中的變量分兩種:

(1)普通數據類型:char varchar2 date number(整數和小數) boolean long

(2)特殊變量類型(引用變量、記錄型變量)

變量的聲明方式為:變量名 變量類型(變量長度) ,例如:v_name varchar2(20)

變量賦值:

  (1)聲明時使用 := 直接賦值:v_name varchar2(20) := ‘zhangsan’? ? ? ? 只寫=,則是進行比較

  (2)語句賦值: select ?值 ?into 變量名?

?5.1 普通變量的使用

1 -- 聲明一個人的信息 姓名 薪水 地址 2 declare 3 -- 姓名 不能使用name,這是保留字 4 v_name varchar2(50) := '張三'; 5 -- 薪水 小數:number(總長度(小數加整數的位數),小數位數) v_sal number(6,2) --1000.00 6 v_sal number; 7 --地址 8 v_addr varchar2(200); 9 begin 10 --直接賦值 11 v_sal := 15000; 12 --語句賦值 13 select '上海市南京路' into v_addr from dual; --實際工作中應該是from 某個表 14 -- 打印變量 || 是拼接符,相當于java 的+ 15 dbms_output.put_line('姓名:' || v_name || ',薪水:' || v_sal || ',地址:' || v_addr); 16 end;

執行結果:

5.2 引用變量的使用

引用變量:變量的類型和長度取決于表中字段的類型和長度(變量的類型和長度引用表中字段的類型和長度),通過??表名.列名%TYPE 指定變量的類型和長度,例如 v_name emp.ename%TYPE

引用型變量的好處:使用普通變量定義方式,需要知道表中列的類型,而使用引用類型不需要考慮列的類型,使用%TYPE是非常號的編程風格,因為它使得PL/SQL更加靈活,更加適應于對數據庫定義的更新。

?

1 -- 查詢emp表中7839號員工的個人信息,打印姓名和薪水 2 declare 3 -- 姓名 定義的是引用變量 4 v_ename emp.ename%TYPE; 5 -- 薪水 6 v_sal emp.sal%TYPE; 7 8 begin 9 --查詢姓名和薪水并賦值給變量,。使用select into 語句賦值 10 select ename, sal into v_ename, v_sal from emp where empno = 7839; 11 dbms_output.put_line('姓名:' || v_ename || ',薪水:' || v_sal); 12 13 end;

結果:

5.3 記錄型變量

記錄型變量?默認接接收 表中的一行數據,不能指定字段,相當于java中的一個對象。

語法: 變量名稱 表名%ROWTYPE 例如 v_emp emp%rowtype;? ?通過 變量名.字段名 的方式獲取變量中的值

?

1 --記錄型變量示例:用該變量接收表中一行sql的信息 2 declare 3 -- 記錄型變量 4 v_emp emp%ROWTYPE; 5 6 begin 7 --查詢所有字段并賦值給變量,字段名用v_emp.字段名 表示 8 select * into v_emp from emp where empno = 7839; 9 dbms_output.put_line('姓名:' || v_emp.ename || ',薪水:' || v_emp.sal); 10 11 end;

結果:

6.流程控制:

6.1? 條件分支,語法:

BEGIN

?  IF 條件1 then ?執行1;

?    Elsif?條件2 then 執行2 ;? ?--注意不是 elseif ?,是elsif

    ?Else ?執行3

? ? ? ? ?End if;

END

?

1 -- 判斷emp表中記錄是否超過20條,10-20 之間,或者10條以下 2 declare 3 --聲明變量接收emp表中記錄數 4 v_count number; 5 begin 6 -- 查詢并賦值給變量 7 select count(1) into v_count from emp; 8 --判斷打印 9 if v_count > 20 then 10 dbms_output.put_line('emp表中的記錄數在20條以上為' || v_count); 11 elsif v_count >= 10 then 12 dbms_output.put_line('emp表中的記錄數在10-20條之間為' || v_count); 13 else 14 dbms_output.put_line('emp表中的記錄數在10條以下為' || v_count); 15 end if; 16 17 end;

執行結果:

? ?select * 結果如下:

6.2? loop循環.此處只記錄loop循環的使用。 循環兩個要點:1.循環變量初值,循環體中循環變量值要發生變化,

1 -- 循環打印1-10 2 declare 3 -- 聲明一個循環變量并賦初值 4 v_num number := 1; 5 begin 6 loop 7 exit when v_num > 10; 8 dbms_output.put_line(v_num); 9 --循環變量的自增長 10 v_num := v_num + 1; 11 end loop; 12 end;

?7.特殊的變量—— 游標,本質上是一條查詢語句的結果的封裝,只能往前,不能往后

用于臨時存儲一個查詢返回的多行數據(結果集,類似于Javajdbc連接返回的resultset集合),通過遍歷游標,可以逐行訪問處理該結果集的數據

游標使用方法:聲明 打開 讀取 關閉

語法:

游標聲明:? ??CURSOR??游標名[(參數列表)] IS 查詢語句

游標打開:? ??Open 游標名;

游標的取值:?FETCH 游標名 into ?變量列表;

游標關閉:? ??CLOSE 游標名

游標屬性:

?

%NOTFOUND 是在游標中找不到元素時返回TRUE,通常用于判斷,退出循環

7.1 不帶參數的游標 示例:

1 -- 使用游標查詢emp表中所有員工的姓名和工資,并將其依次打印出來 2 declare 3 -- 聲明游標 4 cursor c_emp is 5 select ename, sal from emp; 6 --聲明變量接收游標中的數據 7 v_ename emp.ename%TYPE; 8 v_sal emp.sal%TYPE; 9 begin 10 -- 打開游標 11 open c_emp; 12 -- 遍歷游標 13 loop 14 --獲取游標中的數據,如果有的話就賦值給變量 15 fetch c_emp 16 into v_ename, v_sal; 17 exit when c_emp%notfound; --c_emp%notfound 沒有數據時返回true 18 dbms_output.put_line('姓名:' || v_ename || ',薪水:' || v_sal); 19 end loop; 20 21 --關閉游標 22 close c_emp; 23 24 end;

結果如下:

7.2 帶輸入參數的游標:

1 -- 使用游標查詢emp表中某個部門員工的姓名和工資,并將其依次打印出來 2 declare 3 -- 聲明帶參數的游標,在聲明時加上形參,select語句里面加上查詢條件 4 cursor c_emp(v_deptno emp.deptno%TYPE) is 5 select ename, sal from emp where deptno = v_deptno; 6 --聲明變量接收游標中的數據 7 v_ename emp.ename%TYPE; 8 v_sal emp.sal%TYPE; 9 begin 10 open c_emp(10); -- 打開游標時加上實參 11 loop -- 遍歷游標 12 fetch c_emp into v_ename, v_sal; --獲取游標中的數據,如果有的話就賦值給變量 13 --在判斷之前先獲取一下數據,看有還是沒有 14 exit when c_emp%notfound; --c_emp%notfound 沒有數據時返回true 15 dbms_output.put_line('姓名:' || v_ename || ',薪水:' || v_sal); 16 end loop; 17 close c_emp; --關閉游標 18 19 end;

上述游標使用語句,相當于一個匿名的函數,當測試窗口關閉,語句也就沒有了,無法實現復用。如果想要在窗口關閉了之后還能使用上面那段語句,就需要存儲過程了。參見下文存儲過程學習記錄。

?

轉載于:https://www.cnblogs.com/enjoyjava/p/9130986.html

總結

以上是生活随笔為你收集整理的基于oracle 的PL/SQL编程 -变量使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。