1. 程式人生 > >利用navicat建立儲存過程、觸發器和使用遊標的簡單例項

利用navicat建立儲存過程、觸發器和使用遊標的簡單例項

建立儲存過程和觸發器

1、建表

首先先建兩張表(users表和number表),具體設計如下圖:

2、儲存過程

寫一個儲存過程,往users表中插入資料,建立過程如下:

 

 

程式碼如下:

BEGIN
	#Routine body goes here...
	declare n bigint;
	set n = 201121029684;
	while n <= 201121029694
	do
		insert into users(student_ID) values(n);
		set n = n + 1;
	end while;
END

執行儲存過程後可以看到users表中的資料如下:

整個儲存過程的編寫就完成了,當然這只是一個極為簡單的例子,僅供入門參考。

3、觸發器

在寫觸發器之前,我們先把users的資料清空

truncate table users;

現在我們有兩個表,我要做的事情就是,當我往users中插入資料後,number中也相應變化:

例如,number表中有一條初始資料,id=1,num=0;

當我往users中插入一條資料後,就觸發number表中的num欄位就加1,也就是記錄使用者數。

下面我們來實現這個小小的功能。

右擊users表,選擇設計表

選擇觸發器選項


程式碼:

begin
    update number
    set num = (select count(*) from users) ;
end

儲存後,再往users表中新增新資料,再檢視一下number中的資料,你會神奇的發現,number表中的資料也變了,自己動手試一下吧!

ps:儲存過程需要程式設計師自己去執行,觸發器,顧名思義,自動觸發。

4、遊標使用

首先我將users表中的資料清空(當然不清空也可以),然後再往裡面填充資料,如下圖所示:

我現在想做的是將student_ID欄位都加上100,通過這個例子簡單展示一下游標的使用。

建立一個儲存過程,建立方式參考上面步驟。儲存過程程式碼如下:

BEGIN
	#Routine body goes here...

	declare tmp bigint default 0;
	declare cur CURSOR FOR SELECT student_ID FROM users;  -- 定義遊標
	/*
	02000 發生下述異常之一: 
	SELECT INTO 語句或 INSERT 語句的子查詢的結果為空表。 
	在搜尋的 UPDATE 或 DELETE 語句內標識的行數為零。 
	在 FETCH 語句中引用的遊標位置處於結果表最後一行之後。


	*/
	declare CONTINUE HANDLER FOR SQLSTATE '02000' set tmp = 0; 


	OPEN cur;  -- 開啟遊標
	FETCH cur INTO tmp;  -- 遊標向下走一步


	WHILE(tmp != 0)
	DO	
		select tmp;  -- 將tmp打印出來,會發現tmp就像一個指標,一開始指向第一行,遊標走一步,則指向下一行記錄


		UPDATE users
		SET student_ID = tmp + 100
		WHERE student_ID = tmp;
		FETCH cur INTO tmp;
	END WHILE;

	CLOSE cur;  -- 關閉遊標
END


執行上面的儲存過程,你會發現,users中的資料如你所願的發生了變化。

當然,這個功能直接用迴圈就可以解決,我這裡只是簡單展示一下游標的用法,利於對遊標有個感性認識。

that‘s  all~

相關推薦

利用navicat建立儲存過程觸發器使用遊標簡單例項

建立儲存過程和觸發器 1、建表 首先先建兩張表(users表和number表),具體設計如下圖: 2、儲存過程 寫一個儲存過程,往users表中插入資料,建立過程如下:     程式碼如下: BEGIN #Routine body goes here... d

SQL儲存過程觸發器遊標

儲存過程 1、儲存過程是事先編好的、儲存在資料庫中的程式,這些程式用來完成對資料庫的指定操作。 2、系統儲存過程: SQL Server本身提供了一些儲存過程,用於管理有關資料庫和使用者的資訊。 使用者儲存過程: 使用者也可以編寫自己的儲存過程,並把它存放在資料庫中,供客戶端呼叫。 3、這樣安排的主要目的就

儲存過程觸發器使用者自定義函式實驗 (儲存過程

儲存過程、觸發器和使用者自定義函式實驗 實驗內容一 練習教材中儲存過程、觸發器和使用者自定義函式的例子。教材中的BookSales資料庫,在群共享中,檔名為BookSales.bak。 實驗內容二 針對附件1中的教學活動資料庫,完成下面的實驗內容。 1、儲存過程 (

利用navicat創建存儲過程觸發器使用遊標簡單實例

.net fill student default hand 結果 alt 神奇 行記錄 原文鏈接 創建存儲過程和觸發器 1、建表 首先先建兩張表(users表和number表),具體設計如下圖: 2、存儲過程 寫一個存儲過程,往users表中插入數據,創建

sql語句---儲存過程函式觸發器

儲存過程、函式和觸發器的原理: 實際上都是使用Transact-SQL語言編寫的程式。儲存過程和函式需要顯式呼叫才能執行,而觸發器則在滿足指定條件時自動執行。 1、儲存過程 1.1 定義 儲存過程是Transact-SQL語句的預編譯集合,這些語句在一個名稱下儲

Oracle的儲存過程函式觸發器

--儲存過程的執行 其實是一個編譯的過程 應該在呼叫時執行 create or replace procedure prg_add1(p1 number, p2 number, p3 in out number) as begin dbms_output.put_lin

使用PL/SQL developer ORACLE 建立儲存過程DBMS_JOB定時任務

由於需要對資料庫的一個表進行定時更新,之前想在後臺寫定時任務,後來發現數據庫的dems_job比較方便,之前並沒有接觸過PL/SQL和Oracle的定時任務Job,為了實現這一需求,於是在網上找了各種資料。 建立定時任務job之前首先需要有我們要操作的資料庫表,然後我們應該

【轉】MySQL資料庫 外來鍵檢視儲存過程觸發器的優缺點

https://www.yiibai.com/mysql/introduction-sql-views.html 檢視 使用資料庫檢視的優點 資料庫檢視允許簡化複雜查詢:資料庫檢視由與許多基礎表相關聯的SQL語句定義。 您可以使用資料庫檢視來隱藏終端使用者和外部應用

初學mysql(十)-資料庫之儲存過程函式與遊標-自定義函式流程控制(下)

上一篇部落格講了儲存過程、函式、以及遊標,這一篇部落格接著上一篇部落格來說。首先說說mysql資料庫中的流程控制及自定義函式的使用。 自定義函式: 根據所需要的功能,使用流程控制來完成所需要的功能,完成功能的程式碼就稱為自定義函式。要想完成自定義函式就必須學會流程控制的使

sqlserver查詢資料庫所有儲存過程觸發器索引資訊

1. 查詢所有儲存過程 select Pr_Name as [儲存過程], [引數]=stuff((select ','+[Parameter] from ( select Pr.Name as Pr

MySql—檢視函式儲存過程觸發器

MySql高階—檢視、函式、儲存過程、觸發器 目錄一、檢視    1 一、檢視 1、檢視的定義 檢視的定義: 檢視是由查詢結果形成的一張虛擬表,是表通過某種運算得到的一個投影。 同一張表可以建立多個檢視 建立檢視的語法: create view view_name as select 語句 說明:

遊標例外儲存過程儲存函式java呼叫儲存過程觸發器(Oracle之二)

--遊標(游標) 一般用於多行資料 語法:cursor 遊標名稱 (引數名 引數型別 ..) is select語句 --操作遊標 open 遊標名; --開啟遊標 loop   fetch 遊標名

sql server 2000/2005/2008 判斷儲存過程觸發器檢視是否存在並刪除

--判斷是否存在addOneArticle這個儲存過程 if Exists(select name from sysobjects where NAME = 'addOneArticle' and type='P')     drop procedure addOneArticle --判斷是否存在coun

資料庫儲存過程觸發器遊標,函式

MySQL5 中添加了儲存過程的支援。  大多數SQL語句都是針對一個或多個表的單條語句。並非所有的操作都這麼簡單。經常會有一個完整的操作需要多條才能完成。  儲存過程簡單來說,就是為以後的使用而儲存的一條或多條MySQL語句的集合。可將其視為批檔案。雖然他們的

mysql儲存過程procedure 觸發器trigger 遊標cusor 控制語句(條件,迴圈)

什麼是mysql儲存例程? 儲存例程是儲存在資料庫伺服器中的一組sql語句,通過在查詢中呼叫一個指定的名稱來執行這些sql語句命令. 為什麼要使用mysql儲存過程? 我們都知道應用程式分為兩種,一種是基於web,一種是基於桌面,他們都和資料庫進行互動來完成資料

MySQL儲存過程自定義函式Navicat for mysql建立儲存過程函式呼叫儲存過程函式的區別

與你相遇 好幸運  可我已失去為你淚流滿面的權利  但願在我看不到的天際  你張開了雙翼 1 MySQL儲存過程和函式 過程和函式,它們被編譯後儲存在資料庫中,稱為永續性儲存模組(Persistent Stored Module,PSM),可以反覆呼叫,執行速度快。 1.1 儲存過程 儲存過程是由

Oracle 儲存過程函式的建立呼叫

一、Oracle 建立和呼叫儲存過程 1、基本語法 create or replace procedure update_emp_sal (Name in out type, Name in out type, ... ) is begin end update_emp_

MYSQL5.6建立儲存過程觸發器

MYSQL支援儲存過程procedure,觸發器triger,event(定時任務) 與oracle的儲存過程,觸發器,job對應。 建立示例: 1.儲存過程 DROP PROCEDURE IF EXISTS `PROC_TEST`; CREATE DEFINER =

Oracle03——遊標異常存儲過程存儲函數觸發器Java代碼訪問Oracle對象

height 微軟 數值 getc statement 數據類型 put print .exe 作者: kent鵬 轉載請註明出處: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.遊標(光標)Cursor 在寫

mysql高階包含索引建立優化_函式_儲存過程_觸發器_及遊標

Mysql 高階部分   (1)索引(index)1 (2)檢視(view)2 (3)觸發器(trigger)6 (4)遊標(cursor)8 (5)事務(Transaction)10 (6)儲存過程(Stored Procedure)1