PLSQL中過程、函式、包、觸發器
1. 過程
過程用於執行特定的操作,當建立過程時,既可以指定輸入引數(in),也可以指定輸出引數(out), 通過在過程中使用輸入引數,可以將資料傳遞到執行部分;通過使用輸出引數,可以將執行部分的資料傳遞到應用環境。在sqlplus中可以使用create procedure命令來建立過程。
例項如下:
(1). 請考慮編寫一個過程,可以輸入僱員名,新工資,可修改僱員的工資
(2). 如何呼叫過程有兩種方法; exec call
(3). 如何在Java程式中呼叫一個儲存過程
建立過程,程式碼如下:
-
create procedure sp_pro3(spName varchar2, newSal number)
- --不要寫成number(3,2),表明型別就可以了,不需要大小。就好像Java寫方法時的引數一樣
- Sql程式碼
- begin
- --執行部分,根據使用者名稱去修改工資
- update emp set sal=newSal where ename=spName;
- end;
- /
- begin
- --執行部分,根據使用者名稱去修改工資
- update emp set sal=newSal where ename=spName;
- end;
java程式中呼叫一個儲存過程
-
//演示java程式去呼叫<a href="http://lib.csdn.net/base/oracle" class='replace_word' title="Oracle知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>Oracle</a>的儲存過程案例
- Java程式碼
- import java.sql.*;
- publicclass TestOraclePro{
- publicstaticvoid main(String[] args){
- try{
- //1.載入驅動
- Class.forName("oracle.jdbc.driver.OracleDriver");
- //2.得到連線
-
Connection ct = DriverManager.getConnection("jdbc:oracle:
- //3.建立CallableStatement
- CallableStatement cs = ct.prepareCall("{call sp_pro3(?,?)}");
- //4.給?賦值
- cs.setString(1,"SMITH");
- cs.setInt(2,10);
- //5.執行
- cs.execute();
- //關閉
- cs.close();
- ct.close();
- } catch(Exception e){
- e.printStackTrace();
- }
- }
- }
2. 函式
函式用於返回特定的資料,當建立函式時,在函式頭部必須包含return子句。而在函式體內必須包含return語句返回的資料。我們可以使用create function來建立函式,實際案例:
- --輸入僱員的姓名,返回該僱員的年薪
- create function annual_incomec(name varchar2)
- return number is
- annual_salazy number(7,2);
- begin
- --執行部分
- select sal*12+nvl(comm, 0) into annual_salazy from emp where ename=name;
- return annual_salazy;
- end;
如果函式建立過程有編譯錯誤,可以使用show error;命令顯示錯誤
在sqlplus中呼叫函式
var income number
call annual_incomec('scott') into: income;
print income
var income number
call annual_incomec('scott') into: income;
print income
同樣我們可以在java程式中呼叫該函式
select annual_income('SCOTT') from dual;
這樣可以通過rs.getInt(l)得到返回的結果。
3. 包
包用於在邏輯上組合過程和函式,它由包規範和包體兩部分組成。
(1). 我們可以使用create package命令來建立包。
包的規範只包含了過程和函式的說明,但是沒有過程和函式的實現程式碼。包體用於實現包規範中的過程和函式。
- --建立一個包sp_package
- --宣告該包有一個過程update_sal
- --宣告該包有一個函式annual_income
- Sql程式碼
- create package sp_package is
- procedure update_sal(name varchar2, newsal number);
- function annual_income(name varchar2) return number;
- end;
- create package sp_package is
- procedure update_sal(name varchar2, newsal number);
- function annual_income(name varchar2) return number;
- end;
(2). 建立包體可以使用create package body命令
- --給包sp_package實現包體
- create or replace package body sp_package is
- procedure update_sal(name varchar2, newsal number)
- is
- begin
- update emp set sal = newsal where ename = name;
- end;
- function annual_income(name varchar2) return number is
- annual_salary number;
- begin
- select sal * 12 + nvl(comm, 0) into annual_salary from emp
- where ename = name;
- return annual_salary;
- end;
- end;
(3). 如何呼叫包的過程或是函式
當呼叫包的過程或是函式時,在過程和函式前需要帶有包名,如果要訪問其它方案的包,還需要在包名前加方案名。
call sp_package.update_sal('SCOTT', 1500);
4. 觸發器
觸發器是指隱含的執行的儲存過程。當定義觸發器時,必須要指定觸發的事件和觸發的操作,常用的觸發事件包括insert,update,delete語句,而觸發操作實際就是一個pl/sql塊。可以使用create trigger來建立觸發器。
我們會在後面詳細為大家介紹觸發器的使用,因為觸發器是非常有用的,可維護資料庫的安全和一致性。
相關推薦
PLSQL中過程、函式、包、觸發器
1. 過程 過程用於執行特定的操作,當建立過程時,既可以指定輸入引數(in),也可以指定輸出引數(out), 通過在過程中使用輸入引數,可以將資料傳遞到執行部分;通過使用輸出引數,可以將執行部分的資料傳遞到應用環境。在sqlplus中可以使用create proc
Python - 函式 - 閉包、裝飾器、遞迴
目錄 一、閉包 - 內部函式包含,對外層作用域而非全域性作用域的引用 1-1 閉包的意義 - 優先使用自己外層包裹的作用域 二、裝飾器 - 閉包的一種應用方式 2-1 不使用裝飾器實現裝飾器的功能 - 使用閉包 2-2 無參裝飾器(@裝飾器名) 2-2-1
函式物件、函式巢狀、名稱空間與作用域、閉包函式、裝飾器
一.函式物件 函式時第一類物件,函式可以當作資料傳遞 1.函式可以被引用 2.函式可以作為引數傳入 3.函式可以作為函式的返回值 4.函式可以作為容器型別的元素 二.函式巢狀 1.函式巢狀呼叫:在函式內又呼叫了其他函式 2.函式巢狀定義:在函式內又定義了其他函式(只能在其函式內部呼叫,在其函式
python之函式閉包、可迭代物件和迭代器
一、函式名的應用 # 1,函式名就是函式的記憶體地址,而函式名()則是執行這個函式。 def func(): return print(func) # 返回一個地址 # 2,函式名可以作為變數。 def func1():
js中函式的三種定義方式、函式宣告、函式同名重複、函式刪除、
全棧工程師開發手冊 (作者:欒鵬) 在js中,函式本身屬於物件的一種,因此可以定義、賦值,作為物件的屬性或者成為其他函式的引數。函式名只是函式這個物件類的引用。 一、函式定義 【1】函式宣告語句 使用function關鍵字,後跟一組引數以及函
Oracle中的時間函式用法(to_date、to_char)
一、24小時的形式顯示出來要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二、
C++中類成員函式的過載、覆蓋和隱藏的區別,超清楚!
1.成員函式被過載的特徵: (1)相同的範圍(在同一個類中); (2)函式名字相同; (3)引數不同; (4)virtual 關鍵字可有可無。 2.覆蓋是指派生類函式覆蓋基類函式,特徵是: (1)不同的範圍(分別位於派生類與基類); (2)函式名字相同;
在eclipse中建立maven專案、匯出jar包、在windows伺服器上執行
一.在eclipse中建立maven專案 1>在eclipse的選單欄中:file -> new -> project -> maven project -> next ->next ->選擇 maven-arc
Python中的分組函式(groupby、itertools)
from operator import itemgetter #itemgetter用來去dict中的key,省去了使用lambda函式 from itertools import groupby #itertool還包含有其他很多函式,比如將多個list聯合起來。。 d1={'name':'zhangsa
Js中arguments的使用、函式自呼叫、變數作用域、函式作為引數傳入、函式作為返回值
1,arguments是一個比較特別的物件,每個函式中都有一個arguments,它接收函式傳入的引數,以陣列的形式存放在 arguments,可遍歷 //1,需求:求任意數的最大值 function getMax(){ var Max = arguments
一個比較變態的js傳值,Query的bind、ajax閉包、上下文傳值
pre query dna input primary false function and indexof var getIDNameList = function (list, selected, text, btn, actionUrl, defaultKey,
3、netty粘包、拆包(二)
list ride int 簡化 iter getclass null message som 上篇博客留了個尾巴“而且LineBasedFrameDecoder據說還有一種不要求攜帶結束符的解碼方式”,今天就從源碼來看看是怎麽回事。 一、基本原理 如果沒有netty,
異常處理、模塊包、時間模塊、subprocess(調用shell命令)
模塊異常處理 捕捉異常可以使用try/except語句。try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。如果你不想在異常發生時結束你的程序,只需在try裏捕獲它。 更多的異常關鍵字:http://www.runoob.com/python/python-exce
開啟運維之路之第 3 篇——目錄作用介紹、檔案搜尋、其它命令、解壓縮包、使用者管理
1、目錄作用介紹 我們先切換到系統根目錄 / 看看根目錄下有哪些目錄 [[email protected] ~]# cd / [[email protected] /]# ls 說明: 根目錄下的bin和sbin,usr目錄下的bin和sbin,這四
JavaScript的函式(定義與解析、匿名函式、函式傳參、return關鍵字)和陣列(操作資料的方法、多維陣列、陣列去重)
函式 函式就是重複執行的程式碼片。 1、函式定義與執行 <script type="text/javascript"> // 函式定義 function aa(){ alert('hello!'); } // 函式執行
idea一些好用的配置(eclipse快捷鍵、自動導包、提示不區分大小寫)
讓idea的快捷鍵使用eclipse的快捷鍵 ctrl+alt+s --> Keymap --> 選擇Eclipse 注意:換成eclipse快捷鍵之後可以再設定如下的idea提示快捷鍵 alt+/ idea引數提示: ide
Java學習筆記 第4天~函式的定義、函式的特點、函式的過載、陣列
函式的定義 就是定義在類中的具有特定功能的獨立一段小程式(函式也稱之為方法) int c=add(3,4); System.out.println("c"+c); public static int add(int a,int b) { returna+b; } /* 修飾符
Python函式的定義、匿名函式、函式的引數、函式呼叫、引數傳遞、變數作用域、遞迴呼叫
Python函式: 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段。 Python提供了許多內建函式,比如print()。你也可以自己建立函式,這被叫做使用者自定義函式。 定義函式: 在Python中,定義一個函式要使用def語句,依次寫出函式名、
Java之eclipse將工具類打成Jar包、使用jar包、以及刪除jar包
Eclipse如何匯出jar包??? 選中對應的工具類,右鍵==>Export... ==>選中Java目錄下的JAR File==>Next==>選擇匯出路徑==>Fi
PowerDesigner 16.5.0.3982漢化破解版安裝教程(含安裝檔案、漢化包、破解檔案)
目錄 一、軟體下載 二、軟體安裝 三、軟體破解 四、軟體漢化 一、軟體下載 1.下載地址(不用複製,直接點選下載連結即可):連結:https://pan.baidu.com/s/1cNBoCAxR2uZTnI0D8VdyoA 密碼:7ntd 2.失效請留言,會及時補上 二、軟