## 建立乙個不帶返回值的儲存過程 ##
delimiter $$
drop procedure if exists proc_name; $$
create procedureproc_name(
in num1 int,
in num2 int
begin
set @a = 2000000001;
set @d = 20000001;
set @e = 18200000000;
while@a<2000010001 do
set @b=rand_string(5);
set @c=rand_***(1);
insert into students values(@a, @b, @c, @d, @e);
if @a%100=0 then
set @d=@d+1 ;
end if;
end while ;
end $$
delimiter; //注意:delimiter 分號前必須有空格,否則報錯
執行儲存過程:
set @n1= 1;
set @n2=10;
callproc_name(@n1, @n2);
## 建立帶有返回值的儲存過程 ##
delimiter $$
dropprocedure if exists proc_name_out; $$
createprocedure proc_name_out (
out n int
begin
select count(*) into n from employee ;
end$$
delimiter;-- mysql呼叫儲存過程
執行儲存過程:call proc_employee_getcount(@n) ;
## 建立事務 ##
delimiter $$
drop procedure if exists proc_trans;$$
create procedureproc_trans(
in p1 varchar(20) ,
in p2 varchar(50)
begin
declareerr int default0;
declarecontinue handler forsqlexceptionseterr= 1; -- 如果出現sql異常,則將err設定為1後繼續執行後面的操作
setautocommit= 0; -- 開啟事務
-- 批量插入資料 --
insert into sy_queryconfig(syq_id) values(p1);
insert into sy_queryconfig(syq_id) values(p2);
iferr=1 then
rollback;
else
commit;
end if;
end$$
delimiter;
## 建立事務,有任何異常即回滾 ##
delimiter $$
drop procedure if exists proc_trans;$$
create procedureproc_trans (
in p1 varchar(20),
in p2 varchar(50)
begindeclareexit handler forsqlexception-- 只要發生異常就回滾begin
rollback ;end ;
-- 返回異常處理結果等其它操作 --
start transaction ;
insert into sy_queryconfig(syq_id) values(p1);
insert into sy_queryconfig(syq_id) values(p2);
commit ;
end$$
delimiter ;
MYSQL儲存過程定義案例
drop procedure ifexists tryaddtable delimiter create procedure tryaddtable in tablename varchar 20 in createtablesql varchar 1000 begin declare tablec...
mysql的定義 MySQL定義
什麼是sql sql是結構化查詢語言。什麼是資料庫 資料庫是用來儲存資料的。關聯式資料庫 多張表之間的關係。關聯式資料庫包含表 表名 列 主鍵,通過相應的關係列來產生連線關係。資料庫與資料倉儲 資料庫是用來做交易 transaction 資料倉儲是用來做分析 analytics 資料倉儲的作用在於 ...
MySQL定義函式和儲存過程
預設為off 等價於 0 開啟binlog日誌記錄時,是否信任 建立函式 預設情況下,為了防止主機和從機中定義的函式不一致,不允許使用者自定義函式 如果希望自定義函式,必須將 log bin trust function creators on 1 show variables like log b...