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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Oracle入门(十四)之PL/SQL

發(fā)布時間:2023/12/3 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle入门(十四)之PL/SQL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、PL/SQL 基本語法

PL/SQL語言是模塊式的過程化SQL,是oracle公司對SQL的擴(kuò)展。

(1)


(2)


(3)


(5)


(6)


(7)數(shù)據(jù)類型

  • Number 數(shù)字型
  • Varchar2 變長字符型,最大32767個字符
  • Date 日期型
  • Boolean 布爾型(TRUE,FALSE,NULL三者取一)
  • Char 定長字符型,最大32767個字符
  • Int 整數(shù)型
  • Pls_integer 整數(shù)型,產(chǎn)生溢出時出現(xiàn)錯誤
  • Binary_integer 整數(shù)型,表示帶符號的整數(shù)
  • Long 變長字符型,最長2GB


(8)標(biāo)識符

?用來命名常量、變量、游標(biāo)、程序和包
1)必須以字母(A-Z)開頭
2)其后跟字母、數(shù)字(0-9)或特殊字符$#_
3)標(biāo)識符不超過30字符
4)標(biāo)識符中不包含空格
5)標(biāo)識符不能為保留字

6)標(biāo)識符不區(qū)分大小寫

非法標(biāo)識符:12_sal; first-name; sec name;


(9)變量的定義

?變量名 數(shù)據(jù)類型 [not null] [:= 值]
例1: vn_snum number;
例2: vs_name varchar2(10);
例3: vn_sid tab_server.sid%type ;? ?--錨定列


(10)常量定義
?常量名 constant 數(shù)據(jù)類型 [not null] :=值

?例1:vn_num constant number := 10;


(11)

(12)賦值語句: 賦值語句
?包括直接賦值和間接賦值
?直接賦值 v_num := 20000;
?間接賦值(select into、fetch into)
?select max(innum), min(innum)
?into v_max, v_min

?from tab_ingoods;


二、應(yīng)用案例
編寫一個匿名塊程序?qū)崿F(xiàn):

根據(jù)一個員工姓名的本月績效(變量初始值為10)計算并輸出該員工本月收入

本月收入=基本工資(salary)+傭金百分比(COMMISSION_PCT)*績效

set serveroutput on --dbms_output 輸出有效,用在sql developer declarev_b number:=10; --初始值v_lastname varchar2(10):=‘XXX';-- v_firstname employees.first_name%type; --錨定變量v_salary number(6,2); beginselect nvl(salary,0)+nvl(COMMISSION_PCT,0)*v_binto v_salary --間接賦值from employees where last_name=v_lastname;dbms_output.put_line(v_lastname||'本月的工資為:'||v_salary); end;


三、PL/SQL 基本結(jié)構(gòu)

(1)條件控制語句?

declaretheGrade number:= 88; beginif theGrade>=90 thendbms_output.put_line('杰出');elsif theGrade>=80 thendbms_output.put_line('優(yōu)秀');elsif theGrade>=60 thendbms_output.put_line('合格');elsedbms_output.put_line('不及格');end if; end;

(2)循環(huán)

簡單循環(huán)

set serveroutput on; declarei number(8):=5; begin<<first_loop>>loopdbms_output.put_line('i = '||i);i:= i-1;exit first_loop when i = 0;end loop;dbms_output.put_line('LOOP循環(huán)已經(jīng)結(jié)束!'); end;For循環(huán)

beginFor循環(huán)for i in -3..3 loopdbms_output.put_line('i = '||i);end loop;dbms_output.put_line('FOR循環(huán)已經(jīng)結(jié)束!'); end;While循環(huán)

declarei number(8):=5; While循環(huán) beginwhile(i > 0) loopdbms_output.put_line('i = '||i);i:=i-1;end loop while_loop;dbms_output.put_line('WHILE循環(huán)已經(jīng)結(jié)束!'); end;

Case語句

set serveroutput Case語句on declaregender varchar2(20):= '男'; begincase genderwhen '男' then dbms_output.put_line('勇敢');when '女' then dbms_output.put_line('漂亮');else dbms_output.put_line('人妖');end case; end;

Goto語句?

DECLAREi number; BEGINi:=5;<<repeat_loop>> --循環(huán)點(diǎn)DBMS_OUTPUT.PUT_LINE('i='||i);i:=i-1;IF i>0 THENGOTO repeat_loop; --小于5,就goto到repeat_loopEND IF; END;

注:Oracle入門(十四A)之PL/SQL 基本結(jié)構(gòu)


四、異常處理

DECLARE?v_empno employees.employee_id%TYPE:= &empno;v_sal employees.salary%TYPE; BEGINSELECT salary INTO v_sal FROM employeesWHERE employee_id = v_empno;IF v_sal<=15000 THENdbms_output.put_line('編碼為'||v_empno||'員工該加100元!');ELSEdbms_output.put_line('編碼為'||v_empno||'員工工資已經(jīng)超過規(guī)定值!');END IF; EXCEPTIONWHEN NO_DATA_FOUND THENdbms_output.put_line('數(shù)據(jù)庫中沒有編碼為'||v_empno||'的員工');WHEN TOO_MANY_ROWS THENdbms_output.put_line('程序運(yùn)行錯誤!請使用游標(biāo)');WHEN OTHERS THENdbms_output.put_line(SQLCODE||'---'||SQLERRM); END;

注:Oracle入門(十四B)之PL/SQL異常處理



總結(jié)

以上是生活随笔為你收集整理的Oracle入门(十四)之PL/SQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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