顯式遊標與隱式遊標
當涉及到數據庫時,遊標是一種控制結構,它允許遍歷數據庫中的記錄。遊標提供了一種為sqlselect語句指定名稱的機制,然後可以使用它來操作該SQL語句中的信息。當沒有顯式定義的遊標時,每次在PL/SQL中發出Select語句時,都會自動創建並使用隱式遊標。顧名思義,顯式遊標是由開發人員顯式定義的。在PL/SQL中,顯式遊標實際上是使用關鍵字cursor定義的命名查詢。
什麼是隱式遊標?
每次發出select語句時,Oracle都會自動創建並使用隱式遊標。如果使用隱式遊標,數據庫管理系統(DBMS)將自動執行打開、獲取和關閉操作。隱式遊標只能與返回單行的SQL語句一起使用。如果SQL語句返回多行,則使用隱式遊標將導致錯誤。隱式遊標自動與每個數據操作語言(DML)語句關聯,即INSERT、UPDATE和DELETE語句。另外,隱式遊標用於處理SELECTINTO語句。當使用隱式遊標獲取數據時,當SQL語句未返回任何數據時,將引發NO_data \u FOUND異常。此外,當SQL語句返回多行時,隱式遊標可能引發過多的“多行”異常。
什麼是顯式遊標?
如前所述,顯式遊標是使用名稱定義的查詢。顯式遊標可以看作是指向一組記錄的指針,並且該指針可以在記錄集中向前移動。顯式遊標為用戶提供對打開、關閉和獲取數據的完全控制。此外,可以使用顯式遊標獲取多行。顯式遊標也可以像任何函數或過程一樣接受參數,這樣每次執行遊標時都可以更改遊標中的變量。此外,顯式遊標允許您將整行提取到PL/SQL記錄變量中。當需要使用顯式名稱聲明它時,需要先使用顯式名稱。可以使用給Cursor的名稱來訪問Cursor屬性。聲明後,需要先打開遊標。然後就可以開始取數了。如果需要獲取多行,則需要在循環中執行獲取操作。最後,需要關閉光標。
顯式遊標與隱式遊標的區別