首頁 > 資料庫 > Oracle > 主體

oracle儲存過程的基本結構包含哪些

青灯夜游
發布: 2022-03-02 16:52:15
原創
3875 人瀏覽過

oracle預存程​​序的結構包含三部分:1、過程聲明;2、執行過程部分;3、預存程序異常,該部分可省略,如果要增強腳本的容錯性和調試的方便性那就寫上異常處理。

oracle儲存過程的基本結構包含哪些

本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。

什麼是預存程序

預存程序: 百度百科上是這樣解釋的,預存程序(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者透過指定預存程序的名字並給出參數(如果該預存程序帶有參數)來呼叫預存程序。

簡單的說就是專門做一件事一段sql語句。

可以由資料庫自己去調用,也可以由java程式去調用。

在oracle資料庫中預存程序是procedure。

預存程序結構

(1)基本結構

Oracle預存程​​序包含三部分:過程聲明,執行過程部分,預存程序異常(可寫可不寫,要增強腳本的容錯性和調試的方便性那就寫上異常處理)

(2)無參存儲過程

/**
name_procedure就是自己自定义的存储过程名
*/
create or replace procedure name_procedure AS/IS
	变量名1  数据类型;
	变量名2  数据类型;
BEGIN
	--要处理的业务逻辑
	EXCEPTION    --存储过程异常
END name_procedure;
登入後複製

(3).有參考存儲過程

#普通參數預存程序

/*
age 类型为number 初始化为20;
*/
CREATE OR REPLACE PROCEDURE name_procedure (param1 TYPE)
AS/IS
name varchar(20);
age number :=20;
BEGIN
  --业务处理.....
END ;
登入後複製

帶參數的預存程序並且進行賦值

CREATE OR REPLACE PROCEDURE 存储过程名称(
       s_no in varchar,
       s_name out varchar,
       s_age number) AS
total NUMBER := 0;
BEGIN
  SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age;
  dbms_output.put_line('符合该年龄的学生有'||total||'人');
  EXCEPTION
    WHEN too_many_rows THEN 
    DBMS_OUTPUT.PUT_LINE('返回值多于1行'); 
END
登入後複製

其中參數IN表示輸入參數,是參數的預設模式。

  • OUT表示傳回值參數,型別可以使用任意Oracle中的合法型別。

  • OUT模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳回呼叫他的過程

  • IN OUT表示該參數可以向該過程中傳遞值,也可以將某個值傳出去

第7行:查詢語句,把參數s_age作為過濾條件,INTO關鍵字,把查到的結果賦給total變數。

第8行:輸出查詢結果,在資料庫中「||」用來連接字串

第9—11行:做異常處理

#預存程序語法

(1)運算子

oracle儲存過程的基本結構包含哪些

(2) SELECT INTO STATEMENT語句

  • 將查詢結果賦值給一個變數或多個變數

需求:查出成績為100分的那個學生的姓名,年齡,籍貫

CREATE OR REPLACE PROCEDURE DEMO_CDD1 IS
s_name VARCHAR2;   --学生名称
s_age NUMBER;      --学生年龄
s_address VARCHAR2; --学生籍贯
BEGIN
  --给单个变量赋值
  SELECT student_address INTO s_address
  FROM student where student_grade=100;
   --给多个变量赋值
  SELECT student_name,student_age INTO s_name,s_age
  FROM student where student_grade=100;
  --输出成绩为100分的那个学生信息
  dbms_output.put_line('姓名:'||s_name||',年龄:'||s_age||',籍贯:'||s_address);
END
登入後複製

(3)選擇語句

//if 后面一定要添加THEN 相当于Java中的 大括号
IF s_sex=1 THEN
  dbms_output.put_line('这个学生是男生');
ELSE IF THEN
  dbms_output.put_line('这个学生是女生');
ELSE
  dbms_output.put_line('这个学生性别错误');
END IF
登入後複製

(4)循環語句

#a.基本循環

LOOP
  IF 表达式 THEN
    EXIT;
  END IF
END LOOP;
登入後複製

b.while循環

WHILE 表达式 LOOP
  dbms_output.put_line('haha');
END LOOP;
登入後複製

c.for循環

//a 1 到 20 范围
FOR a in 10 .. 20 LOOP
  dbms_output.put_line('value of a: ' || a);
END LOOP;
登入後複製

推薦教學:《Oracle教程

以上是oracle儲存過程的基本結構包含哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!