儲存過程與游標

2021-07-03 18:15:13 字數 2273 閱讀 5444

有以下4種:

1. 使用show procedure status命令檢視儲存過程的定義

2. 檢視某個資料庫中所有儲存過程名

select  name from mysql.proc where db='yourdb'

and type='procedure';

使用mysql命令」show create procedure 儲存過程名;」

在系統的information_schema資料庫中,使用select語句查詢儲存過程相關資訊。

select * from information_schema.rountines where rountine_name='yourprocname';
聯絡:

- 應用程式呼叫儲存過程或函式時,只需要提供過程名或者函式名,以及引數資訊,將若干條mysql指令傳送到mysql伺服器上,節省了網路開銷。

- 儲存過程或函式可重複使用,減少了資料庫開發人員,尤其是應用程式開發人員的工作量

- 可以增強安全訪問控制。可以設定只有某些資料庫使用者才具有某些儲存過程或函式的執行權

區別:

- 函式必須有乙個返回值,且必須決定返回值的資料型別。儲存過程則對於返回值沒有限定條件,由out或者inout引數定義。

- 在函式中可使用select…into語句為某個變數賦值,但不能使用select語句返回結果(集);儲存過程則沒有限制。

- 函式可以直接嵌入到sql語句中,而儲存過程需要單獨呼叫,需要使用call關鍵字。

- 函式中的限制較多,比如不能使用與事務操作相關的操作。

- 應用程式呼叫函式時,通常將函式封裝到sql字串中呼叫。而在呼叫儲存過程時,必須使用call關鍵字呼叫。如果希望獲取儲存過程的返回值,則必須給儲存過程的out引數活inout引數傳遞mysql會話變數。

錯誤處理型別

錯誤觸發條件

用於定義自定義錯誤處理程式執行的時機。有3種取值

mysql錯誤**

ansi標誌錯誤**

自定義錯誤觸發條件

自定義錯誤處理程式

錯誤發生後,mysql會立即執行自定義錯誤處理程式中的mysql語句,自定義錯誤處理程式也可以是乙個begin-end語句塊。

宣告游標

declare 游標名 cursor for

select 語句;

開啟游標

open 游標名
從游標中提取資料

fetch 游標名 into 變數名1,變數名2
關閉游標

close 游標名
delimiter $$

create

procedure

update_course_score_proc

(in c_no int)

modifies

sqldata

begin

declare

s_no

int;

declare grade int;

declare state char(20);

declare score_cursor cursor for

select student_no,score from choose where course_no=c_no;

declare continue handler for

1329

set state='error';

open score_cursor;

repeat

fetch score_cursor into s_no,grade;

set grade = grade + 5;

if(grade>100) then

set grade = 100;end

if; if(grade >=55 && grade<=59) then

set grade=60;end

if; update choose set score=grade where student_no=s_no and course_no=c_no;

until state='error'

endrepeat;

close score_cursor;

end$$delimiter ;

oracle儲存過程,游標

oracle儲存過程,游標 2010 07 07 13 01 create or replace procedure p tb task log is 功能 插入任務到任務日誌表 v task start date date v task end date date v sql code numbe...

mysql 游標 儲存過程

1.首先需要注意的是mysql中游標必須要建立在儲存過程中 2.直接上sql 查詢當天資料 select in flow out flow from water meter data where 1 1 and date sys read time curdate 1 order by in flo...

SQL 儲存過程,游標

if exists select from sysobjects where id object id proc fetch all 事先刪除儲存過程 drop procedure proc fetch all gocreate procedure proc fetch all as 當 set n...