-儲存過程名和引數,引數中in表示傳入引數,out標示傳出引數,inout表示傳入傳出引數
create
procedure p_procedurecode(in sumdate varchar(10
))
begin
declare v_sql varchar(500); --
需要執行的sql語句
declare sym varchar(6
);
declare var1 varchar(20
);
declare var2 varchar(70
);
declare var3 integer
;
--定義游標遍歷時,作為判斷是否遍歷完全部記錄的標記
declare no_more_departments integer
default
0;
--定義游標名字為c_result
declare c_result cursor
forselect barcode,barname,barnum from
tmp_table;
--宣告當游標遍歷完全部記錄後將標誌變數置成某個值
declare
continue handler for
notfound
set no_more_departments=1;
set sym=
substring(sumdate,1,6); --
擷取字串,並將其賦值給乙個遍歷
--連線字串構成完整sql語句,動態sql執行後的結果記錄集,在mysql中無法獲取,因此需要轉變思路將其放置到乙個臨時表中(注意**中的寫法)。一般寫法如下:
--'create temporary table 表名(select的查詢語句);
set v_sql= concat('
create temporary table tmp_table(select aa as aacode,bb as aaname,count(cc) as ccnum from h
',sym,'
where substring(dd,1,8)=
''',sumdate,'''
group by aa,bb)');
set@v_sql
=v_sql; --
注意很重要,將連成成的字串賦值給乙個變數(可以之前沒有定義,但要以@開頭)
prepare stmt from
@v_sql; --
預處理需要執行的動態sql,其中stmt是乙個變數
execute stmt; --
執行sql語句
deallocate
prepare stmt; --
釋放掉預處理段
open c_result; --
開啟之前定義的游標
repeat --
fetch c_result into var1, var2, var3; --
取出每條記錄並賦值給相關變數,注意順序
--執行查詢語句,並將獲得的值付給乙個變數 @oldaacode(注意如果以@開頭的變數可以不用通過declare語句事先宣告)
select
@oldaacode:=vcaacode from t_sum where vcaacode=var1 and dtdate=
sumdate;
if@oldaacode
=var1 then
--判斷
update t_sum set inum=var3 where vcaacode=var1 and dtdate=
sumdate;
else
insert
into t_sum(vcaacode,vcaaname,inum,dtdate) values
(var1,var2,var3,sumdate);
endif
; until no_more_departments
end repeat; --
迴圈語句結束
close c_result; --
關閉游標
drop
temporary
table tmp_table; --
刪除臨時表
end;
mysql儲存過程 MySQL儲存過程
在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...
mysql 儲存過程 mysql 儲存過程
建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...
mysql 儲存過程 MySQL儲存過程
目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...