當(dāng)前位置:首頁(yè) > IT技術(shù) > 數(shù)據(jù)庫(kù) > 正文

PL/SQL
2021-09-22 11:25:11

在sqlplus中serveroutput是默認(rèn)關(guān)閉的,使用下面的方法可以打開(kāi)

set serveroutput on

顯示隨機(jī)數(shù)

begin
dbms_output.put_line(dbms_random.value(1,100));
end;
declare
rnd number;
begin
rnd:=floor(dbms_random.value(1,100));
dbms_output.put_line(rnd);
end;

在一行上輸出SCOTT的薪水及所在部門(mén)名稱(chēng)

declare
v_sal  number(7,2);
v_dname  varchar2(14);
begin
select sal,dname into v_sal,v_dname from emp join dept using(deptno) where ename='SCOTT';
dbms_output.put_line('sal:'||v_sal||' dname:'||v_dname);
end;

子程序
本質(zhì)就是具名塊
一次編譯,多次運(yùn)行

將邏輯上相關(guān)聯(lián)的PL/S?L類(lèi)型、變量常量、子程序、游標(biāo)和異常等封裝在一起
可以將個(gè)包看作是一個(gè)小型的應(yīng)用程序
觸發(fā)器
在一個(gè)事件之前或之后觸發(fā)
通常是用于完成數(shù)據(jù)同步維護(hù)、關(guān)聯(lián)事務(wù)處理、預(yù)方誤操作等情況

?

輸入輸出
ー大多數(shù)PL/SQL的輸入輸出是通過(guò)SQL語(yǔ)句完成的,比如通過(guò)SQL存取數(shù)據(jù)
其他的PL/SQL輸入輸出是通過(guò) Oracle自身提供的相關(guān)包來(lái)實(shí)現(xiàn)
DBMS OUTPUT
HTF? ? 用在網(wǎng)頁(yè)編寫(xiě)當(dāng)中去使用的
HTP? ??用在網(wǎng)頁(yè)編寫(xiě)當(dāng)中去使用的
DBMS_PIPE? ? 可以將在一個(gè)實(shí)例上運(yùn)行的不同的會(huì)話之間的通訊
UTL_FILE? ? 文件的讀寫(xiě)操作
UTL_HTTP
UTL_SMTP? ? 發(fā)郵件的

?

數(shù)據(jù)抽象
游標(biāo)
復(fù)合數(shù)據(jù)
集合
記錄
抽象數(shù)據(jù)類(lèi)型
%TYPE
DEMO 2.1
%ROWTYPE
DEMO3取出最高薪水和最低薪水差距最大的薪水級(jí)別的信息

declare
v_sal  emp.sal%type;
v_dname  dept.dname%type;
begin
select sal,dname into v_sal,v_dname from emp join dept using(deptno) where ename='SCOTT';
dbms_output.put_line('sal:'||v_sal||' dname:'||v_dname);
end;
declare
cursor sg is select * from (select * from salgrade order by hisal-losal desc) where rownum<=1;
v_sg    sg%rowtype;
begin
open sg;
fetch sg into v_sg;
dbms_output.put_line('grade:'||v_sg.grade||'  losal:'||v_sg.losal||'  hisal:'||v_sg.hisal);
close sg;
end;

?控制語(yǔ)句

declare
maxgap  number:=0;
maxsg  salgrade%rowtype;
begin
for  v_sg in (select * from salgrade)
  loop
    dbms_output.put_line('grade:1'||v_sg.grade||'  losal:'||v_sg.losal||'  hisal:'||v_sg.hisal);
    if maxgap<v_sg.hisal-v_sg.losal then
      maxsg:=v_sg;
    end if;
  end loop;
dbms_output.put_line('grade:'||maxsg.grade||'  losal:'||maxsg.losal||'  hisal:'||maxsg.hisal);
end;

PL/SQL架構(gòu)

PL/SQL引擎

?

本文摘自 :https://www.cnblogs.com/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >