国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

oracle數(shù)據(jù)庫PL/SQL過程(組圖)

2024-08-29 13:37:42
字體:
供稿:網(wǎng)友

  要想利用PL/SQL程序完成比較完整的數(shù)據(jù)庫任務(wù),需要進(jìn)一步學(xué)習(xí)一些高級設(shè)計要素的內(nèi)容。前面編寫執(zhí)行的PL/SQL程序,共同的特點(diǎn)是沒有名稱,只能存儲為文件,然后通過執(zhí)行文件的方式執(zhí)行,因此稱為無名塊。 與此對應(yīng)的是在PL/SQL中也引入了高級程序設(shè)計的一些概念,其中最重要的就是過程。
  
  過程就是高級程序設(shè)計語言中的模塊的概念,將一些內(nèi)部聯(lián)系的命令組成一個個過程,通過參數(shù)在過程之間傳遞數(shù)據(jù)是模塊化設(shè)計思想的重要內(nèi)容。
  
  創(chuàng)建過程
  
  1. 過程的語法結(jié)構(gòu)
  
  完整的過程結(jié)構(gòu)如下:
  create or replace PRocedure 過程名 as
  聲明語句段;
  begin
  執(zhí)行語句段;
  exception
  異常處理語句段;
  end;
  
  2. 過程的特點(diǎn)
  
  過程是有名稱的程序塊,as要害詞代替了無名塊的declare。
  
  3. 創(chuàng)建過程實(shí)例
  
  在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序?qū)?chuàng)建名為tempprocedure的過程,create是創(chuàng)建過程的標(biāo)識符,replace表示若同名過程存在將覆蓋原過程。該過程定義了一個變量,其類型和testtable數(shù)據(jù)表中的currentdate字段類型相同,都是日期型,將數(shù)據(jù)表中的recordnumber字段為88的currentdate字段內(nèi)容送入變量中,然后輸出結(jié)果。
  ―――――――――――――――――――――――――――――――――――――
  set serveroutput on
  create or replace procedure tempuser.tempprocedure as
  tempdate tempuser.testtable.currentdate%type;
  begin
  select currentdate
  into tempdate
  from testtable
  where recordnumber=88;
  dbms_output.put_line(to_char(tempdate));
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】:第9章/ createprocedure.sql。
  
  執(zhí)行結(jié)果如圖9.41所示。
  
 oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖一)

  查詢過程
  
  登錄【企業(yè)治理器】,在【治理目標(biāo)導(dǎo)航樹】里選擇【網(wǎng)絡(luò)】/【數(shù)據(jù)庫】/【myOracle.mynet】/【方案】/【過程】/【TEMPUSER】選項,出現(xiàn)如圖9.42所示的創(chuàng)建好的過程。
  
 oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖二)

  修改過程
  
 ?。?)在【SQLPlus Worksheet】的【菜單欄】選擇【文件】/【打開】菜單命令,將創(chuàng)建過程的createprocedure.sql文件調(diào)出進(jìn)行修改,修改完畢后重新執(zhí)行創(chuàng)建過程。
  
 ?。?)在【企業(yè)治理器】里選中要修改的過程,用鼠標(biāo)右鍵單擊,在出現(xiàn)的快捷菜單里選擇【查看/編輯具體資料】選項,如圖9.43所示。
  
 ?。?)出現(xiàn)如圖9.44所示的編輯過程的【一般信息】選項卡。在【文本編輯區(qū)】可以編輯該過程,單擊“確定”按鈕將更新該過程,單擊“編譯”按鈕將編譯該過程的 PL/SQL 源代碼,使該過程可以在數(shù)據(jù)庫中存儲和執(zhí)行。
  
 oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖三)
點(diǎn)擊查看大圖

  執(zhí)行過程
  
  要執(zhí)行創(chuàng)建的過程,必須通過主程序來調(diào)用過程。
  
  在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,執(zhí)行結(jié)果如圖9.45所示。
  ―――――――――――――――――――――――――――――――――――――
  set serveroutput on
  begin
  tempprocedure;
  end;
  ―――――――――――――――――――――――――――――――――――――
  
  【配套程序位置】:第9章/ executeprocedure.sql。
  
 oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖四)

  在Oracle中,創(chuàng)建好的過程可以被任何程序調(diào)用。
  
  帶參數(shù)的過程
  
  前面介紹的過程沒有參數(shù),主程序和過程沒有數(shù)據(jù)的傳遞,下面介紹帶參數(shù)的過程的設(shè)計和使用。
  
  1. 參數(shù)類型
  
  在PL/SQL過程中,可以有3種類型的參數(shù)。

  
  in參數(shù):讀入?yún)?shù),主程序向過程傳遞參數(shù)值。
  
  out參數(shù):讀出參數(shù),過程向主程序傳遞參數(shù)值。
  
  in out 參數(shù):雙向參數(shù),過程與主程序雙向交流數(shù)據(jù)。
  
  2. 定義帶參數(shù)的過程
  
  在下面的PL/SQL程序代碼中,將創(chuàng)建三個調(diào)用參數(shù)。
  
  tempdeptno:類型為in,與scott.dept.deptno的類型一致,為數(shù)值型。
  
  tempdname:類型為out,與scott.dept.dname的類型一致,為字符型。
  
  temploc:類型為in out,與scott.dept.loc類型一致,為字符型。
  
  創(chuàng)建兩個過程內(nèi)參數(shù)。
  
  loc1:與scott.dept.loc的類型一致,為字符型。
  
  dname1:與scott.dept.dname的類型一致,為字符型。
  
  該帶參數(shù)的過程的功能是從數(shù)據(jù)表scott.dept中尋找deptno字段等于tempdeptno調(diào)用參數(shù)值的dname和loc字段,和其他字符組合,送給兩個出口參數(shù)。
  
  以system用戶名、sysdba身份登錄【SQLPlus Worksheet】,執(zhí)行下列PL/SQL程序,執(zhí)行結(jié)果如圖9.46所示。
  ―――――――――――――――――――――――――――――――――――――
  Set serveroutput on
  create or replace procedure scott.tempprocedure(
  tempdeptno in scott.dept.deptno%type,
  tempdname out scott.dept.dname%type,
  temploc in out scott.dept.loc%type)as
  loc1 scott.dept.loc%type;
  dname1 scott.dept.dname%type;
  begin
  select loc into loc1
  from scott.dept
  where deptno=tempdeptno;
  select dname into dname1
  from scott.dept
  where deptno=tempdeptno;
  temploc:='地址:'loc1;
  tempdname:='姓名'dname1;
  end;
  ―――――――――――――――――――――――――――――――――――――
  【配套程序位置】:第9章/ createscottprocedure.sql。
  
 oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖五)

  調(diào)用參數(shù)分割用“,”號。
  
  3. 使用帶參數(shù)的過程
  
  在主程序中的實(shí)際參數(shù)和過程中的形式參數(shù)的傳遞有很多種辦法,這里推薦讀者采用一一對應(yīng)的辦法,按對應(yīng)的位置傳遞參數(shù)。要求實(shí)際參數(shù)和形式參數(shù)在數(shù)據(jù)類型和位置排列上做到完全一致。
  
  在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序調(diào)用帶參數(shù)的過程scott.tempprocedure,實(shí)際參數(shù)為(10,’’,’’)
  
  執(zhí)行結(jié)果如圖9.47所示。
  
 oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖六)
點(diǎn)擊查看大圖

  【配套程序位置】:第9章/ executescottprocedure.sql。
  
oracle數(shù)據(jù)庫PL/SQL過程(組圖)(圖七)
  讀者可以嘗試改變參數(shù)值,然后測試過程執(zhí)行結(jié)果。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 修武县| 叶城县| 永年县| 鄂伦春自治旗| 四子王旗| 澄江县| 团风县| 漳浦县| 博客| 抚州市| 绥宁县| 岗巴县| 中西区| 张北县| 堆龙德庆县| 松桃| 吴旗县| 平武县| 怀化市| 安泽县| 綦江县| 铁岭市| 斗六市| 洪洞县| 宁安市| 安徽省| 高平市| 宝清县| 江永县| 邹平县| 云浮市| 靖西县| 韶山市| 阜南县| 恭城| 中方县| 中方县| 宝丰县| 平果县| 鹿邑县| 花莲市|