搜尋
首頁常見問題oracle儲存過程的寫法

oracle儲存過程的寫法

Jul 24, 2019 pm 03:49 PM
oracle

oracle預存程​​序的寫法是【CREATE OR REPLACE PROCEDURE 預存程序名稱(param1 in type,param2 out type)IS 變數1 類型(值範圍);BEGIN select count...】。

oracle儲存過程的寫法

推薦教學:oracle教學

1、預存程序的基本語法:

 CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type)
  IS
  变量1 类型(值范围);
  变量2 类型(值范围);  
  BEGIN
    select count(*) into 变量1 from 表名 where 列名=param1;
    if (判断条件) then
      select 列名 into 变量2 from 表名 where 列名=param1;
      DBMS_OUTPUT.put_line('打印信息');
    Elsif (判断条件) then
      dbms_output.put_line('打印信息');
    Else
      Raise 异常名 (NO_DATA_FOUND);
    End if;
  Exception
      When others then
        Rollback;   
  END;

#2、已命名的例外:##

  命名的系统异常               产生原因
  ACCESS_INTO_NULL           未定义对象
  CASE_NOT_FOUND              CASE中若未包含相应的WHEN,并且没有设置ELSE时
  COLLECTION_IS_NULL           集合元素未初始化
  CURSER_ALREDAY_OPEN          游标已经打开
  DUP_VAL_NO_INDEX              唯一索引对应的列上有重复的列
  INVALID_CUSER               在不合法的游标上操作
  INVALID_NUMBER               内嵌的SQL语句不能将字符转换为数字
  NO_DATA_FOUND               使用select into 未返回行,或应用索引表未初始化
  TOO_MANY_ROWS                执行select into 时,结果集超过一行
  ZERO_DIVIDE                  除数为0
  SUBSCRIPT_BEYOND_COUNT          元素下标超过嵌套表或VARRAY的最大值
  SUBSCRIPT_OUTSIDE_LIMIT          使用嵌套表或VARRAY时,将下标指定为负数
  VALUE_ERROR               赋值时,变量长度不足以容纳实际数量
  LOGIN_DENIED               PL/SQL应用程序连接到ORACLE数据库时,提供了不正确的用户名和密码
  NO_LOGGED_ON                 PL/SQL应用程序在没有连接ORACLE数据库的情况下访问数据 
  PROGRAM_ERROR              PL/SQL内部问题,可能需要重装数据字典& PL/SQL系统包
  ROWTYPE_MISMATCH             宿主游标变量与PL/SQL游标变量的返回类型不兼容
  SELF_IS_NULL                 使用对象类型时,在NULL对象上调用对象方法
  STORAGE_ERROR                运行PL/SQL时,超出内存空间
  SYS_INVALID_ID              无效的ROWID字符串
  TIMEOUT_ON_RESOURCE             ORACLE在等待资源时超时

3、實際範例

2.1 沒有參數的過程

create or replace procedure test_count 
 is 
  v_total int;
  v_date varchar(20);
 begin
    select count(*) into v_total from dual;
    select to_char(sysdate,'yyyy-mm-dd') into v_date from dual;     
    DBMS_OUTPUT.put_line('总人数:'||v_total);   
    DBMS_OUTPUT.put_line('当前时间:'||v_date);  
  end;

調用方法:

begin
    test_count;
end;

2.2 只帶傳入參數的程序

 create or replace procedure test_count1(v_id in varchar2)
       as 
       v_name varchar(100);
       begin
         select c_name into v_name from tb_store where c_stono=v_id;
         DBMS_OUTPUT.put_line(v_id||'店的名称为:'||v_name);
        exception
         when no_data_found then dbms_output.put_line('no_data_found');
       end;

呼叫方法:

begin
 test_count1(11910);
end;

2.3 只帶輸出參數的過程 

create or replace procedure test_count2(v_name out varchar2)
  is
  begin
        select c_name into v_name from tb_store where c_stono='1101';
    exception
        when no_data_found then dbms_output.put_line('no_data_found');
  end;

呼叫方法:

declare 
  v_name varchar(200);
  begin
    test_count2(v_name);
    dbms_output.put_line(v_name);
  end;

2.4 帶輸入參數與輸出參數的預存程序

  create or replace procedure test_count3(v_id in int,v_name out varchar2) 
   is 
       begin   
            select c_name into v_name from tb_store where c_stono=v_id;
            dbms_output.put_line(v_name);
    exception
             when no_data_found then dbms_output.put_line('no_data_found');
  end;

呼叫方法:

  declare 
  v_name varchar(200);
  begin
    test_count3('1101',v_name);
  end;

以上是oracle儲存過程的寫法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中