儲存過程與函式
儲存過程:沒有直接返回值,主要用於執行操作。
① 建立語法
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
BEGIN
< procedure_body >
END;
/
② is與as有什麼區別?
- 在儲存過程與函式中,is與as沒有任何區別
- 在檢視中只能用as,在遊標中只能用is
③ 建立儲存過程的一些小細節
- 無參儲存過程定義時儲存過程名後面一定不能加括號!!!報錯:Warning: Function created with compilation errors
- 無參儲存過程呼叫時可以加括號也可以不用加,可以通過PL/SQL呼叫,也可以通過execute關鍵字呼叫
- 有參儲存過程的引數型別一定不能指定精度!!!否則報錯:Warning: Procedure created with compilation errors
- 利用 表名.欄位%type 可以取到表中某個欄位的具體型別,方便給我們宣告的變數時設定它的型別 如 price page_books.price%type;
- 無參儲存過程呼叫時可以加括號也可以不用加,可以通過PL/SQL呼叫,也可以通過execute關鍵字呼叫
- 有參儲存過程的引數型別一定不能指定精度!!!否則報錯:Warning: Procedure created with compilation errors
- 利用 表名.欄位%type 可以取到表中某個欄位的具體型別,方便給我們宣告的變數時設定它的型別 如 price page_books.price%type;
④ 利用PL/SQL DEVELOPER工具執行儲存過程時,如果儲存過程中有輸出內容想要看到,必須先執行下面的命令:
set serveroutput on;
⑤ 例:建立有參儲存過程
CREATE PROCEDURE addBook(title in varchar2,price in number,author in varchar2,pt in date)
AS
BEGIN
insert into page_books (title,price,author,publish_date) values(title,price,author,pt);
END;
/
呼叫有參儲存過程
- 方式一
DECLARE
title page_books.title%type := 'title18';
price page_books.price%type := 50.55;
author page_books.author%type := 'author18';
pt page_books.publish_date%type := sysdate;
BEGIN
addBook(title,price,author,pt);
END;
/
- 方式二EXECUTE addBook('book19',100,'author19',sysdate);
例:建立無參儲存過程
CREATE PROCEDURE sayHello
IS
BEGIN
DBMS_OUTPUT.put_line('Hello!');
END;
/
呼叫無參儲存過程
- 方式一
BEGIN
sayHello();
END;
/
- 方式二BEGIN
sayHello;
END;
/
- 方式三EXECUTE sayHello;
-方式四EXECUTE sayHello();
函式:返回一個值,主要用於計算並返回一個值。
①建立函式的小細節
- 函式必須包含一個return語句
- RETURN 子句指定要在函式返回的資料型別
- 函式定義的時候,無參函式名後面一定不能加括號!!!報錯:Warning: Function created with compilation errors
- 函式呼叫的時候無參函式方法名後面可以不用加括號,有參必須加
- RETURN 子句指定要在函式返回的資料型別
- 函式定義的時候,無參函式名後面一定不能加括號!!!報錯:Warning: Function created with compilation errors
- 函式呼叫的時候無參函式方法名後面可以不用加括號,有參必須加
② 例:建立有參函式
CREATE FUNCTION mul(x in double precision,y in double precision)
RETURN double precision
IS
result double precision;
BEGIN
result := x*y;
RETURN result;
END;
/
呼叫有參函式
DECLARE
a double precision;
BEGIN
a:=mul(2,10);
DBMS_OUTPUT.put_line(a);
END;
/
例:建立無參函式
CREATE FUNCTION totalBooks
RETURN number
IS
totalBooks number;
BEGIN
select count(id) INTO totalBooks from page_books;
RETURN totalBooks;
END;
/
呼叫無參函式
DECLARE
a number;
BEGIN
a:=totalBooks();
DBMS_OUTPUT.put_line(totalBooks);
END;
/
關於上述用到的page_books表的相關資訊如下圖
相關文章
- 儲存過程與儲存函式儲存過程儲存函式
- mySql 儲存過程與函式MySql儲存過程函式
- 儲存過程 函式儲存過程函式
- MySQL自定義函式與儲存過程MySql函式儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- PL/SQL 中的儲存過程與函式SQL儲存過程函式
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- SQL server儲存過程函式SQLServer儲存過程函式
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- Oracle 11g系列:函式與儲存過程Oracle函式儲存過程
- 儲存過程vs.函式QM儲存過程函式
- mysql儲存過程基本函式(轉)MySql儲存過程函式
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- PLSQL學習-【7儲存過程、函式】SQL儲存過程函式
- 儲存過程和函式的區別儲存過程函式
- MySQL 5.5 建立儲存過程和函式MySql儲存過程函式
- MySQL4:儲存過程和函式MySql儲存過程函式
- openGauss 函式及儲存過程支援函式儲存過程
- 函式儲存過程併發控制-案例函式儲存過程
- (Oracle)儲存過程、儲存函式和包的相關知識與例項Oracle儲存過程儲存函式
- mysql儲存過程及日期函式實踐MySql儲存過程函式
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- 【fosoyo】SQL Server儲存過程/函式加/解密SQLServer儲存過程函式解密
- 深入mysql建立自定義函式與儲存過程的詳解MySql函式儲存過程
- Oracle 儲存過程 定義 和 優點 與 函式 區別Oracle儲存過程函式
- 在Oracle中查詢儲存過程和函式Oracle儲存過程函式
- SQL中儲存過程和函式的區別SQL儲存過程函式
- day25-索引和函式及儲存過程索引函式儲存過程
- 函式儲存過程被誤刪恢復步驟函式儲存過程
- (9)mysql 中的儲存過程和自定義函式MySql儲存過程函式
- php呼叫mysql儲存過程和函式的方法(轉)PHPMySql儲存過程函式
- 破解儲存過程,函式,檢視,觸發器解密儲存過程函式觸發器解密
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- 匯出系統表中的儲存過程和函式儲存過程函式