可以用在儲存過程的SQL語句主要有以下型別

2021-08-31 13:17:38 字數 1358 閱讀 2387

1、 無返回結果語句,如:insert,update,drop, delete等

2、 select語句返回單行變數並可傳給本地變數(select ..into) 

3、 返回多行結果集的select語句,並可使用游標迴圈處理

注意,儲存過程返回的多行結果集,可以被客戶端程式(如php)所接收,但要在乙個儲存過程中接收另乙個儲存過程的結果集是不可能的,一般解決辦法是存入臨時表供其它過程共用

4、 prepare語句

以下主要講述游標及prepare部分

游標

定義

declare cursor_name cursor for select_statement;

游標操作

open開啟游標

open cursor_name;

fetch獲取游標當前指標的記錄,並傳給指定變數列表,注意變數數必須與游標返回的字段數一致,要獲得多行資料,使用迴圈語句去執行fetch

fetch cursor_name into variable list;

close關閉游標

close cursor_name ;

注意:mysql的游標是向前唯讀的,也就是說,你只能順序地從開始往後讀取結果集,不能從後往前,也不能直接跳到中間的記錄.

乙個完整的例子:

-- 定義本地變數

declare o varchar(128);

-- 定義游標

declare ordernumbers cursor

forselect callee_name from account_tbl where acct_timeduration=10800;

declare continue handler for not found set no_more_departments=1;

set no_more_departments=0;

-- 開啟游標

open ordernumbers;

-- 迴圈所有的行

repeat

-- get order number

fetch ordernumbers into o;

update account set allmoney=allmoney+72,lastmonthconsume=lastmonthconsume-72 where numtg=@o;

-- 迴圈結束

until no_more_departments

end repeat;

-- 關閉游標

close ordernumbers;

普通SQL語句可以用Exec執行

例如儲存過名為 myprocedure use adventureworks create procedure myprocedure city varchar 20 as begin select from person.address end exec myprocedure city both...

分頁SQL語句 儲存過程

分頁儲存過程一 alter procedure dbo fy startrowindex int,maximumrows int asbegin select from select ugid,uname,row number over order by ugid desc rownum from ...

儲存過程分頁Sql語句

create proc proc page pageindex int,當前頁碼 pagesize int,每頁多少條 tablename nvarchar 50 所要查詢的表名稱 pagecount int output,計算 總共多少頁 recordcount int output 記錄的總數量...