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

Oracle存儲(chǔ)過(guò)程創(chuàng)建方式

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

前言

在做的一個(gè)功能,業(yè)務(wù)要求數(shù)據(jù)處理的一部分邏輯要通過(guò)Oracle的存儲(chǔ)過(guò)程實(shí)現(xiàn),因?yàn)楹苌偈褂么鎯?chǔ)過(guò)程進(jìn)行數(shù)據(jù)邏輯的處理,故進(jìn)行一個(gè)記錄。

一、Oracle 存儲(chǔ)過(guò)程

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

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

2.1 package 的創(chuàng)建

2.1.1 package create

定義一個(gè) package 中的方法,類(lèi)似于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 對(duì)應(yīng)包名;
  • PROCEDURE find :find 為testA 包名下對(duì)應(yīng)的存儲(chǔ)過(guò)程名稱(chēng);
  • pi$param1 IN NUMBER, --參數(shù)1 數(shù)字: IN 代表是輸入的參數(shù),即要傳值的參數(shù);
  • po$count OUT NUMBER,: out 代表返回的數(shù)據(jù)

2.1.2 存儲(chǔ)過(guò)程 常用的輸入/輸出參數(shù)類(lèi)型

數(shù)字類(lèi)型(Number)

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

字符類(lèi)型(VARCHAR2、CHAR)

定義:

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

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

日期時(shí)間類(lèi)型(DATE、TIMESTAMP)

定義:

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

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

2.2 package body的創(chuàng)建

package body 是對(duì)package 中存儲(chǔ)過(guò)程的具體實(shí)現(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 存儲(chǔ)過(guò)程中,使用DECLARE關(guān)鍵字來(lái)聲明變量。
 -- 變量聲明通常放在存儲(chǔ)過(guò)程的IS或AS關(guān)鍵字之后,BEGIN關(guān)鍵字之前。聲明變量的基本格式為變量名 數(shù)據(jù)類(lèi)型 [ := 初始值];
 DECLARE
    v_name VARCHAR2(50);
    v_count NUMBER := 0;
    v_1 VARCHAR2(50) :='';
 begin 
 	-- 此處處理業(yè)務(wù)邏輯
  -- 最后返回結(jié)果:
  -- 直接賦值
  po$count := 數(shù)量
  -- 通過(guò)select  into 賦值
   SELECT COUNT(1) INTO po$count FROM xxx;
  -- 通過(guò)游標(biāo)返回?cái)?shù)據(jù)集合
   OPEN po$result FOR sql 語(yǔ)句;
  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)鍵字來(lái)調(diào)用存儲(chǔ)過(guò)程:

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é)

本文對(duì) oracle 存儲(chǔ)過(guò)程的創(chuàng)建進(jìn)行記錄。

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

相關(guān)文章

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

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

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

    解決Oracle RMAN刪除歸檔日志不釋放問(wèn)題的方法

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

    在客戶(hù)端配置TNS測(cè)試報(bào)錯(cuò)ORA-12170:TNS:連接超時(shí)

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

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

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

    自動(dòng)備份Oracle數(shù)據(jù)庫(kù)

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

    Oracle表空間查看sql使用情況

    我們?cè)谌粘9ぷ髦胁榭幢砜臻g的使用情況大多數(shù)都是使用DBA。下面腳本之家小編給大家?guī)?lái)了oracle表空間查看sql使用情況的方法步驟,需要的童鞋參考下
    2016-05-05
  • oracle中distinct的用法詳解

    oracle中distinct的用法詳解

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

    安裝oracle11g時(shí)遇到INS-13001的問(wèn)題及解決

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

    oracle存儲(chǔ)過(guò)程常用的技巧(詳)

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

    Oracle刪除表及查看表空間的實(shí)例詳解

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

最新評(píng)論

松阳县| 乌拉特中旗| 竹溪县| 鹰潭市| 巴中市| 秭归县| 香格里拉县| 新乐市| 双流县| 上高县| 通化县| 合山市| 辽宁省| 青州市| 乃东县| 博白县| 宁河县| 孝感市| 修水县| 昌乐县| 汕头市| 阿克陶县| 沭阳县| 金阳县| 钟山县| 万盛区| 夏河县| 鄂托克前旗| 保德县| 浮山县| 石棉县| 赞皇县| 华阴市| 绥化市| 文化| 清新县| 榆树市| 浦县| 黄龙县| 南木林县| 礼泉县|