日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

?

1. 需要開啟的服務(wù):? 本機(jī)安裝的oracle ,默認(rèn)是開機(jī)啟動服務(wù)的,開機(jī)時間太慢,關(guān)閉了,需要手動打開:

OracleDBConsoleorcl

OracleOraDb10g_home1iSQL*Plus

OracleOraDb10g_home1TNSListener

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

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

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

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

4.打印helloworld

結(jié)果如下:

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

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

?

?

5.?PLSQL變量的使用:

PLSQL中的變量分兩種:

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

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

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

變量賦值:

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

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

?5.1 普通變量的使用

1 -- 聲明一個人的信息 姓名 薪水 地址 2 declare 3 -- 姓名 不能使用name,這是保留字 4 v_name varchar2(50) := '張三'; 5 -- 薪水 小數(shù):number(總長度(小數(shù)加整數(shù)的位數(shù)),小數(shù)位數(shù)) 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; --實(shí)際工作中應(yīng)該是from 某個表 14 -- 打印變量 || 是拼接符,相當(dāng)于java 的+ 15 dbms_output.put_line('姓名:' || v_name || ',薪水:' || v_sal || ',地址:' || v_addr); 16 end;

執(zhí)行結(jié)果:

5.2 引用變量的使用

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

引用型變量的好處:使用普通變量定義方式,需要知道表中列的類型,而使用引用類型不需要考慮列的類型,使用%TYPE是非常號的編程風(fēng)格,因?yàn)樗沟?/span>PL/SQL更加靈活,更加適應(yīng)于對數(shù)據(jù)庫定義的更新。

?

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;

結(jié)果:

5.3 記錄型變量

記錄型變量?默認(rèn)接接收 表中的一行數(shù)據(jù),不能指定字段,相當(dāng)于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;

結(jié)果:

6.流程控制:

6.1? 條件分支,語法:

BEGIN

?  IF 條件1 then ?執(zhí)行1;

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

    ?Else ?執(zhí)行3

? ? ? ? ?End if;

END

?

1 -- 判斷emp表中記錄是否超過20條,10-20 之間,或者10條以下 2 declare 3 --聲明變量接收emp表中記錄數(shù) 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表中的記錄數(shù)在20條以上為' || v_count); 11 elsif v_count >= 10 then 12 dbms_output.put_line('emp表中的記錄數(shù)在10-20條之間為' || v_count); 13 else 14 dbms_output.put_line('emp表中的記錄數(shù)在10條以下為' || v_count); 15 end if; 16 17 end;

執(zhí)行結(jié)果:

? ?select * 結(jié)果如下:

6.2? loop循環(huán).此處只記錄loop循環(huán)的使用。 循環(huán)兩個要點(diǎn):1.循環(huán)變量初值,循環(huán)體中循環(huán)變量值要發(fā)生變化,

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

?7.特殊的變量—— 游標(biāo),本質(zhì)上是一條查詢語句的結(jié)果的封裝,只能往前,不能往后

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

游標(biāo)使用方法:聲明 打開 讀取 關(guān)閉

語法:

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

游標(biāo)打開:? ??Open 游標(biāo)名;

游標(biāo)的取值:?FETCH 游標(biāo)名 into ?變量列表;

游標(biāo)關(guān)閉:? ??CLOSE 游標(biāo)名

游標(biāo)屬性:

?

%NOTFOUND 是在游標(biāo)中找不到元素時返回TRUE,通常用于判斷,退出循環(huán)

7.1 不帶參數(shù)的游標(biāo) 示例:

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

結(jié)果如下:

7.2 帶輸入?yún)?shù)的游標(biāo):

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

上述游標(biāo)使用語句,相當(dāng)于一個匿名的函數(shù),當(dāng)測試窗口關(guān)閉,語句也就沒有了,無法實(shí)現(xiàn)復(fù)用。如果想要在窗口關(guān)閉了之后還能使用上面那段語句,就需要存儲過程了。參見下文存儲過程學(xué)習(xí)記錄。

?

轉(zhuǎn)載于:https://www.cnblogs.com/enjoyjava/p/9130986.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲精品一区二区三区久久 | 神马午夜在线观看 | 亚洲狠狠婷婷综合久久久久图片 | 在线观看免费黄色小视频 | 小视频在线观看 | 国产鲁鲁视频在线观看特色 | 精品在线一区二区 | 日本精品一二三 | 福利资源在线观看 | 在线播放你懂得 | 日日骚av一区二区 | www.香蕉视频在线观看 | 丝袜脚交国产在线观看 | 美国伊人网 | 中字幕视频在线永久在线观看免费 | 亚洲最大福利视频 | 久操精品 | 久久精品国产99国产精品 | 亚洲熟女乱综合一区二区三区 | 亚洲精品久久久久久无码色欲四季 | 欧美日韩在线观看免费 | 欧美日韩八区 | 日韩天天操 | 无码人妻精品一区二区三区99不卡 | 日韩在线观看免费 | 成年人福利网站 | 国产精品久久免费 | 国色综合| 在线观看免费黄视频 | 黄色av网站免费在线观看 | 91视| 性久久久久久久久久 | 电影《两个尼姑》免费播放 | 亚洲久久色 | 天天做天天爱 | 欧美色v | 一对一色视频聊天a | 狠狠五月天 | 中文字幕在线观看视频www | 涩涩一区 | 免费看黄网址 | 日韩av手机在线免费观看 | 久久婷婷激情 | 777中文字幕 | 在线看污视频 | 国产精成人品免费观看 | 国产视频一区二区视频 | 超碰免费看 | 欧美18av | 亚洲欧美在线播放 | 亚洲成人av中文字幕 | 巨乳美女动漫 | 看片免费黄在线观看入口 | 日本人妻丰满熟妇久久久久久 | 成人在线观看免费视频 | 精产国品一二三产品蜜桃 | 日韩中文字幕在线视频 | 男人的天堂avav | 日日干干 | 欧美激情精品久久久久久变态 | 99久久黄色| 亚洲尻逼| 婷婷色图 | 中文不卡av| 四虎一区二区三区 | 国产特黄| 老子影院午夜精品无码 | 中文字幕一区av | 亚洲色图在线播放 | 极品淫少妇 | 私密按摩massagexxx | 色就是色av | 国产成人综合一区二区三区 | 欧美无吗| 日韩中文字幕一区二区三区四区 | 精品一区二区三区无码按摩 | 草草影院欧美 | 探花国产 | 少妇被按摩师摸高潮了 | 夜夜操天天爽 | 理论片午午伦夜理片影院99 | 91精品99| 男人的网站在线观看 | 久草视频中文在线 | 成人在线不卡 | 黄色一级在线视频 | 亚洲射射射 | 成人www | 99久久久无码国产 | www.日韩av| 校园春色中文字幕 | av女优天堂在线观看 | 麻豆婷婷 | 九九免费在线视频 | 四虎影视成人永久免费观看亚洲欧美 | 日本国产一级片 | 日韩成人福利视频 | 亚洲高清视频在线播放 | 尤物视频免费在线观看 |