存儲過程procedure

来源:http://www.cnblogs.com/as-dreamer/archive/2017/10/28/7746813.html
-Advertisement-
Play Games

oracle PROCEDURE 關鍵字: oracle 存儲過程 1.基本結構 CREATE OR REPLACE PROCEDURE 存儲過程名字 ( 參數1 IN NUMBER, 參數2 IN NUMBER ) IS 變數1 INTEGER :=0; 變數2 DATE; BEGIN END 存 ...


oracle PROCEDURE

關鍵字: oracle 存儲過程

1.基本結構 
CREATE OR REPLACE PROCEDURE 存儲過程名字 

    參數1 IN NUMBER, 
    參數2 IN NUMBER 
) IS 
變數1 INTEGER :=0; 
變數2 DATE; 
BEGIN 

END 存儲過程名字 

2.SELECT INTO STATEMENT 
  將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條 
  記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND) 
  例子: 
  BEGIN 
  SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx; 
  EXCEPTION 
  WHEN NO_DATA_FOUND THEN 
      xxxx; 
  END; 
  ... 

3.IF 判斷 
  IF V_TEST=1 THEN 
    BEGIN 
       do something 
    END; 
  END IF; 

4.while 迴圈 
  WHILE V_TEST=1 LOOP 
  BEGIN 
XXXX 
  END; 
  END LOOP; 

5.變數賦值 
  V_TEST := 123; 

6.用for in 使用cursor 
  ... 
  IS 
  CURSOR cur IS SELECT * FROM xxx; 
  BEGIN 
FOR cur_result in cur LOOP 
  BEGIN 
   V_SUM :=cur_result.列名1+cur_result.列名2 
  END; 
END LOOP; 
  END; 

7.帶參數的cursor 
  CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID; 
  OPEN C_USER(變數值); 
  LOOP 
FETCH C_USER INTO V_NAME; 
EXIT FETCH C_USER%NOTFOUND; 
    do something 
  END LOOP; 
  CLOSE C_USER; 

8.用pl/sql developer debug 
  連接資料庫後建立一個Test WINDOW 
  在視窗輸入調用SP的代碼,F9開始debug,CTRL+N單步調試   轉載:

oracle 存儲過程

關鍵字: oracle 存儲過程 存儲過程創建語法: 

       create or replace procedure 存儲過程名(param1 in type,param2 out type) 

as 

變數1 類型(值範圍); 

變數2 類型(值範圍); 

Begin 

    Select count(*) into 變數1 from 表A where列名=param1; 

    If (判斷條件) then 

       Select 列名 into 變數2 from 表A 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; 



註意事項: 

1,  存儲過程參數不帶取值範圍,in表示傳入,out表示輸出 

2,  變數帶取值範圍,後面接分號 

3,  在判斷語句前最好先用count(*)函數判斷是否存在該條操作記錄 

4,  用select 。。。into。。。給變數賦值 

5,  在代碼中拋異常用 raise+異常名 



以命名的異常 

命名的系統異常                          產生原因 

ACCESS_INTO_NULL                   未定義對象 

CASE_NOT_FOUND                     CASE 中若未包含相應的 WHEN ,並且沒有設置 

ELSE 時 

COLLECTION_IS_NULL                集合元素未初始化 

CURSER_ALREADY_OPEN          游標已經打開 

DUP_VAL_ON_INDEX                   唯一索引對應的列上有重覆的值 

INVALID_CURSOR                 在不合法的游標上進行操作 

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 資料庫時,提供了不 

正確的用戶名或密碼 

NOT_LOGGED_ON                       PL/SQL 應用程式在沒有連接 oralce 資料庫的情況下 

訪問數據 

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 在等待資源時超時    轉自:http://lorry1113.javaeye.com/blog/513851
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 更新完後試下運行正在維護的舊項目,出現各種錯誤,因為後來發現問題不在這,所以沒記完整,大概如下: A larger heap for the Gradle daemon is recommended for running jack. It currently has 512 MB.For fast ...
  • 相比新的網路請求框架Volley真的很落後,一無是處嗎,要知道Volley是由google官方推出的,雖然推出的時間很久了,但是其中依然有值得學習的地方。 從命名我們就能看出一些端倪,volley中文意為群射,齊射,官方解釋說它適合通信頻繁但是數據量不大的網路請求操作( a burst or emi ...
  • Response Headers(從伺服器得到的回覆的頭) Example 1: Retry-After: 120 Example 2: Retry-After: Fri, 07 Nov 2014 23:59:59 GMT Permanent Common non-standard response ...
  • 我們在使用App時,一次登錄後App如果不主動退出登錄或者清除數據,App會在很長一段時間內保持登錄狀態,或者讓用戶感覺到登錄一次就不用每次都輸入用戶密碼才能進行登錄。銀行、金融涉及到支付類的App一般不支持這種長時間的登錄狀態保持。對於保持長期登錄的技術實現方式,除了和前端技術有關,還涉及到前後臺 ...
  • 因為偶爾關註QQ運動, 看到QQ運動的積分抽獎界面比較有意思,所以就嘗試用自定義View實現了下,原本想通過開發者選項查看下界面的一些信息,後來發現積分抽獎界面是在WebView中展示的,應該是在H5頁面中用js代碼實現的,暫時不去管它了。 這裡的自定義View針對的是繼承自View的情況,你可以將 ...
  • 移動互聯網近幾年發展尤為迅速,越來越多的企業也開始將目光聚集到了移動互聯網,這意味著移動互聯網時代到來,而移動APP應用是競爭的一個因素。在移動互聯網時代,移動APP開發已經不再是什麼新鮮事了,許多的企業都知道,專屬的獨立品牌APP開發是企業在移動互聯網未來生存發展的重要選擇。 那開發一款APP要多 ...
  • 一直不明白,hdfs管理的可視化工具不算難寫,為什麼找不到一個能用的,我知道的其實也就是eclipse的hadoop插件。 插件還算好用,但是和eclipse綁定的,加入用其他工具開發呢?找到了一個c#版的源碼,不過,學的是java,c#編譯完後實在是不會打包, 所以就自己寫一個java版的吧! 花 ...
  • CentOS6.9安裝Mysql5.7 一、上傳安裝包 二、建立用戶以及mysql的目錄 1、建立一個mysql的組 輸入命令: groupadd mysql 2、建立mysql用戶,並放到mysql組 輸入命令:useradd -r -g mysql mysql 3、給mysql用戶設置密碼 輸入 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...