利用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