最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle存儲過程創(chuàng)建方式

 更新時間:2025年02月19日 11:15:09   作者:拽著尾巴的魚兒  
本文介紹了Oracle存儲過程的創(chuàng)建,包括package和package body的定義,以及輸入/輸出參數(shù)的類型,通過示例代碼,詳細(xì)說明了如何創(chuàng)建和使用存儲過程,并總結(jié)了個人經(jīng)驗

前言

在做的一個功能,業(yè)務(wù)要求數(shù)據(jù)處理的一部分邏輯要通過Oracle的存儲過程實現(xiàn),因為很少使用存儲過程進行數(shù)據(jù)邏輯的處理,故進行一個記錄。

一、Oracle 存儲過程

Oracle 存儲過程是一種存儲在數(shù)據(jù)庫中的可重復(fù)使用的代碼塊,用于執(zhí)行特定的任務(wù)或一系列 SQL 操作。

二、Oracle 存儲的創(chuàng)建

2.1 package 的創(chuàng)建

2.1.1 package create

定義一個 package 中的方法,類似于java 中的借口。

(示例):

create or replace package testA is
PROCEDURE find(
    pi$param1   IN NUMBER,  --參數(shù)1 數(shù)字
    pi$param2   IN VARCHAR2,--參數(shù)2 字符串
    pi$param3   IN DATE,    --參數(shù)3 日期
    --------------------輸出參數(shù)-----------------------
    po$count           OUT NUMBER, --總條數(shù)
    po$result          OUT  row_types.RESULTSET--結(jié)果集
  );
end testA ;
  • create or replace package testA is : testA 對應(yīng)包名;
  • PROCEDURE find :find 為testA 包名下對應(yīng)的存儲過程名稱;
  • pi$param1 IN NUMBER, --參數(shù)1 數(shù)字: IN 代表是輸入的參數(shù),即要傳值的參數(shù);
  • po$count OUT NUMBER,: out 代表返回的數(shù)據(jù)

2.1.2 存儲過程 常用的輸入/輸出參數(shù)類型

數(shù)字類型(Number)

  • 定義:用于存儲數(shù)值數(shù)據(jù),可以表示整數(shù)、小數(shù)等。例如,NUMBER(5,2)表示一個總共 5 位,其中小數(shù)部分占 2 位的數(shù)字。
  • 用途:在輸入?yún)?shù)中,可以用于接收如商品價格、員工工資、數(shù)量等數(shù)值。在輸出參數(shù)中,可返回計算后的數(shù)值結(jié)果,如計算后的總價、平均值等。

字符類型(VARCHAR2、CHAR)

定義:

  • VARCHAR2是可變長度的字符類型,存儲長度根據(jù)實際存儲的字符數(shù)確定。例如,VARCHAR2(100)可以存儲最多 100 個字符的字符串。
  • CHAR是固定長度的字符類型,存儲時如果實際字符數(shù)小于定義長度,會用空格填充。如CHAR(10)存儲長度總是 10 個字符。

用途:作為輸入?yún)?shù),常用于接收名稱(如員工姓名、產(chǎn)品名稱)、描述信息等字符串。作為輸出參數(shù),可以返回如格式化后的名稱、錯誤消息等字符串。

日期時間類型(DATE、TIMESTAMP)

定義:

  • DATE類型用于存儲日期和時間信息,精確到秒。它存儲世紀(jì)、年、月、日、時、分、秒等信息。
  • TIMESTAMP類型比DATE更精確,它可以存儲小數(shù)秒,并且在處理跨時區(qū)的日期時間等場景更有用。

用途:在輸入?yún)?shù)方面,可接收如訂單日期、員工入職日期等日期時間值。在輸出參數(shù)中,能返回如計算后的到期日期、操作完成時間等。

2.2 package body的創(chuàng)建

package body 是對package 中存儲過程的具體實現(xiàn)(示例):

(1) package body 示例:

create or replace package body testA is
PROCEDURE find(
    pi$param1   IN NUMBER,  --參數(shù)1 數(shù)字
    pi$param2   IN VARCHAR2,--參數(shù)2 字符串
    pi$param3   IN DATE,    --參數(shù)3 日期
    --------------------輸出參數(shù)-----------------------
    po$count           OUT NUMBER, --總條數(shù)
    po$result          OUT row_types.RESULTSET--游標(biāo)結(jié)果集
  )
  is
 -- 此處可以聲明變量:在 Oracle 存儲過程中,使用DECLARE關(guān)鍵字來聲明變量。
 -- 變量聲明通常放在存儲過程的IS或AS關(guān)鍵字之后,BEGIN關(guān)鍵字之前。聲明變量的基本格式為變量名 數(shù)據(jù)類型 [ := 初始值];
 DECLARE
    v_name VARCHAR2(50);
    v_count NUMBER := 0;
    v_1 VARCHAR2(50) :='';
 begin 
 	-- 此處處理業(yè)務(wù)邏輯
  -- 最后返回結(jié)果:
  -- 直接賦值
  po$count := 數(shù)量
  -- 通過select  into 賦值
   SELECT COUNT(1) INTO po$count FROM xxx;
  -- 通過游標(biāo)返回數(shù)據(jù)集合
   OPEN po$result FOR sql 語句;
  end;
  
  
end testA ;

(2) 結(jié)果集定義游標(biāo)返回:

CREATE OR REPLACE PACKAGE row_types
AS
  TYPE  resultSet  IS REF CURSOR;
  TYPE  strSplit IS TABLE OF VARCHAR2 (40);
  Type  uuidArray is Table OF number(20);
END;

(3)使用 CALL 或 EXECUTE 關(guān)鍵字來調(diào)用存儲過程:

DECLARE
  count_1 NUMBER;
  result_1 row_types.RESULTSET;
  TYPE result_record_type IS RECORD (
        str1   VARCHAR2(500),
        str2   VARCHAR2(4000),
        str3   VARCHAR2(500),
        str4   VARCHAR2(500),
        str5   VARCHAR2(500),
        str6   VARCHAR2(500),
        str7   VARCHAR2(500),
        str8   VARCHAR2(500),
        str9   VARCHAR2(500),
        str10 VARCHAR2(500),
        str11 VARCHAR2(500),
        str12 VARCHAR2(500),
        str13 VARCHAR2(500),
        str14 VARCHAR2(500),
        str15 VARCHAR2(500),
        str16 VARCHAR2(500),
        str17 VARCHAR2(500),
        str18 VARCHAR2(500),
        str19 VARCHAR2(500),
        str20 VARCHAR2(500),
        str21 VARCHAR2(500),
        str22 VARCHAR2(500),
        str23 VARCHAR2(500),
        num1 NUMBER,
        num2 NUMBER,
        num3 NUMBER,
        num4 NUMBER,
        num5 NUMBER,
        num6 NUMBER,
        num7 NUMBER,
        num8 NUMBER,
        num9 NUMBER,
        DT   DATE,
        DT1  DATE,
        DT2  DATE,
        DT3  DATE,
        DT4  DATE
    );
    result_row result_record_type;
begin
	testA.find(1,'test',count_1,result_1);
  DBMS_OUTPUT.put_line('DHIDHDIDIH:'||count_1);
  loop
      fetch result_1 into result_row.str1,result_row.DT;
      EXIT WHEN result_1%NOTFOUND;
      dbms_output.put_line('結(jié)果內(nèi)容:'||result_row.str1 ||'=='|| 
      result_row.DT  
      );
  end loop;
  close result_1;
end;

總結(jié)

本文對 oracle 存儲過程的創(chuàng)建進行記錄。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Oracle數(shù)據(jù)庫中ora-12899錯誤的解決方法

    Oracle數(shù)據(jù)庫中ora-12899錯誤的解決方法

    大家在使用oracle數(shù)據(jù)庫時,經(jīng)常會遇到各種各樣的問題,其中ORA-12899就是前段時間我在將數(shù)據(jù)導(dǎo)入到我本地機器上的時候一直出現(xiàn)的問題.經(jīng)過一番倒騰問題順利解決,下面小編把實現(xiàn)思路分享到腳本之家平臺大家可以參考下
    2017-11-11
  • 解決Oracle RMAN刪除歸檔日志不釋放問題的方法

    解決Oracle RMAN刪除歸檔日志不釋放問題的方法

    RMAN清除方式會自動清除磁盤上的歸檔日志文件,同時會釋放控制文件中對應(yīng)的歸檔日志的歸檔信息,但最近在使用中就遇到了一個問題,下面這篇文章主要給大家介紹了關(guān)于解決Oracle RMAN刪除歸檔日志不釋放問題的方法,需要的朋友可以參考下。
    2017-07-07
  • 在客戶端配置TNS測試報錯ORA-12170:TNS:連接超時

    在客戶端配置TNS測試報錯ORA-12170:TNS:連接超時

    在Red Hat Enterprise Linux Server Releae 5.5 成功安裝ORACLE 10g 后,在客戶端配置TNS后,測試是否可以連接到數(shù)據(jù)塊服務(wù)器,結(jié)果報錯:ORA-12170:TNS:連接超時
    2012-12-12
  • oracle11g 通過修改配置文件方式連接遠(yuǎn)程數(shù)據(jù)庫的方法

    oracle11g 通過修改配置文件方式連接遠(yuǎn)程數(shù)據(jù)庫的方法

    這篇文章主要介紹了oracle11g 通過修改配置文件方式連接遠(yuǎn)程數(shù)據(jù)庫的方法,需要的朋友可以參考下
    2017-04-04
  • 自動備份Oracle數(shù)據(jù)庫

    自動備份Oracle數(shù)據(jù)庫

    自動備份Oracle數(shù)據(jù)庫...
    2007-03-03
  • Oracle表空間查看sql使用情況

    Oracle表空間查看sql使用情況

    我們在日常工作中查看表空間的使用情況大多數(shù)都是使用DBA。下面腳本之家小編給大家?guī)砹薿racle表空間查看sql使用情況的方法步驟,需要的童鞋參考下
    2016-05-05
  • oracle中distinct的用法詳解

    oracle中distinct的用法詳解

    distinct這個關(guān)鍵字來過濾掉多余的重復(fù)記錄只保留一條,但往往只用它來返回不重復(fù)記錄的條數(shù),而不是用它來返回不重記錄的所有值。其原因是distinct只有用二重循環(huán)查詢來解決,而這樣對于一個數(shù)據(jù)量非常大的站來說,無疑是會直接影響到效率的。
    2015-09-09
  • 安裝oracle11g時遇到INS-13001的問題及解決

    安裝oracle11g時遇到INS-13001的問題及解決

    在Win10安裝Oracle 11g時出現(xiàn)INS-13001錯誤,需修改解壓目錄下stage/cvu的cvu_prereq.xml文件,將32-bit改為64-bit,保存后重新運行安裝程序即可解決兼容性問題
    2025-07-07
  • oracle存儲過程常用的技巧(詳)

    oracle存儲過程常用的技巧(詳)

    存儲過程是在大型數(shù)據(jù)庫系統(tǒng)中存儲過程在數(shù)據(jù)庫中經(jīng)過第一次編譯后就不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(shù)來,通過本篇文章帶領(lǐng)大家去學(xué)習(xí)oracle存儲過程常用的技巧,感興趣的朋友一起來學(xué)習(xí)吧
    2015-08-08
  • Oracle刪除表及查看表空間的實例詳解

    Oracle刪除表及查看表空間的實例詳解

    這篇文章主要介紹了Oracle刪除表及查看表空間的實例詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03

最新評論

利辛县| 大悟县| 平阴县| 珲春市| 花莲县| 忻城县| 正安县| 上虞市| 诏安县| 南陵县| 辽源市| 太谷县| 兴隆县| 松阳县| 丰原市| 铜梁县| 土默特左旗| 上蔡县| 江阴市| 乌海市| 宜都市| 即墨市| 三穗县| 乌苏市| 洞头县| 大化| 光泽县| 江西省| 黔东| 怀集县| 昆山市| 淮滨县| 左权县| 永济市| 高邮市| 长兴县| 鹤岗市| 汽车| 荣成市| 临武县| 沾益县|