當前位置:首頁 » 存儲配置 » mysql存儲過程例子

mysql存儲過程例子

發布時間: 2022-07-14 14:50:36

A. 求一個詳細的mysql 存儲過程例子,帶寫日誌的那種,不要也不要太簡單啊。

如果想帶日誌只有自己寫了,可以使用row_count()返回改的的行數
例如
create procere p_a1(in p_id int,in p_name varchar(20),out p_out varchar(200))
begin
declare p_cm int;
set p_cm = 0;
insert into a1(id,name) values(p_id,p_name);
select row_count() into p_cm;
if (p_cm = 1)
then
set p_out = '成功';
else
set p_out = '不成功';
end if;
end;

mysql> call p_a1(5,'KK',@a2)//
Query OK, 1 row affected (0.01 sec)
mysql> select @a2//
+--------+
| @a2 |
+--------+
| 成功 |
+--------+
1 row in set (0.01 sec)

以上來自手打,希望對你有幫助!呵呵~

B. mysql存儲過程中使用游標的實例

復制代碼
代碼如下:
DELIMITER
$$
DROP
PROCEDURE
IF
EXISTS
getUserInfo
$$
CREATE
PROCEDURE
getUserInfo(in
date_day
datetime)
--
--
實例
--
MYSQL存儲過程名為:getUserInfo
--
參數為:date_day日期格式:2008-03-08
--

BEGIN
declare
_userName
varchar(12);
--
用戶名
declare
_chinese
int
;
--
語文
declare
_math
int
;
--
數學
declare
done
int;
--
定義游標
DECLARE
rs_cursor
CURSOR
FOR
SELECT
username,chinese,math
from
userInfo
where
datediff(createDate,
date_day)=0;
DECLARE
CONTINUE
HANDLER
FOR
NOT
FOUND
SET
done=1;
--
獲取昨天的日期
if
date_day
is
null
then

set
date_day
=
date_add(now(),interval
-1
day);
end
if;
open
rs_cursor;
cursor_loop:loop

FETCH
rs_cursor
into
_userName,
_chinese,
_math;
--
取數據

if
done=1
then

leave
cursor_loop;

end
if;
--
更新表
update
infoSum
set
total=_chinese+_math
where
UserName=_userName;
end
loop
cursor_loop;
close
rs_cursor;

END$$
DELIMITER
;

C. mysql怎麼用存儲過程例子事務

您好,我來為您解答:
CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
BEGIN
#Routine body goes here...
DECLARE flag int DEFAULT parameter1;#聲明變數flag,將參數值賦給該變數
DECLARE uuidStr VARCHAR(32);#聲明一個長度為32位的字元串
DECLARE currentTime TIMESTAMP;#聲明一個類型為時間戳的變數
declare err INT default 0;#聲明一個整形變數err,默認值是0
declare continue handler for sqlexception set err=1;#當sqlexception handler捕捉到異常時,設置err=1

START TRANSACTION;#開始事務
WHILE flag>0 DO #注意: while不能空實現(在while塊中,裡面必須有語句)
#uuid()函數得到的字元串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除裡面的-,得到一個32位的字元串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到當前的時間
SET currentTime = CURRENT_TIMESTAMP();
#執行插入語句,注意連接字元串的函數concat(str1,str2,...);其中str..也可以是數字類型
INSERT INTO
表名稱
(id,title,keyword,hasImage,isTodayHead,isShowInHome,isBigness,publishTime,originId,modify_time,isAnalysis)
VALUE
(uuidStr,CONCAT('事件標題',flag),CONCAT('關鍵字',flag),1,1,0,0,currentTime,CONCAT('xxxxxxx',flag),currentTime,1);
#每循環一次,flag要減去1,注意沒有flag--的語法
set flag = flag-1;
#在這里測試當err=1時,事務是否有了回滾,測試ok
#IF flag=7 THEN #注意在procere中給變數賦值要用到set,或在變數聲明時用default來父子,所以=號可以用來比較兩邊的值是否相等,<=>也可,區別先不去糾結。
#set err=1;
#END if;
END WHILE;

IF (err=0) THEN
commit;
select 'OK';
ELSE
rollback;
select 'err';
END IF;
END;
如果我的回答沒能幫助您,請繼續追問。

D. mysql存儲過程實例(要求從一張表中的數據轉存到另外一張表中,兩張表中的欄位基本一樣)菜鳥求大神幫幫

createproceretest_sp()
begin
insertintotest001(id)
selectid
fromtest002;
end;

要這樣?

E. 關於如何在mysql中創建存儲過程

創建存儲過程
CREATE PROCEDURE 存儲過程名()
一個例子說明:一個返回產品平均價格的存儲過程如下代碼:
CREATE PROCEDURE proctpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM procts;
END;
//創建存儲過程名為proctpricing,如果存儲過程需要接受參數,可以在()中列舉出來。即使沒有參數後面仍然要跟()。BEGIN和END語句用來限定存儲過程體,過程體本身是個簡單的SELECT語句

F. 有誰可以給個MySql的 Update的存儲過程的例子,模板啊,坐等,在線

創建一個存儲過來用來監控mysql的SELECT、INSERT、UPDATE、DELETE使用情況。
## 創建存儲過程pCheckDbStatus1()
drop procere if exists pCheckDbStatus1;
delimiter //
create procere pCheckDbStatus1()
begin
SET @uptime=0;
SET @com_select=0;
SET @com_insert=0;
SET @com_delete=0;
SET @com_update=0;
select @COM_DELETE:=variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name='COM_DELETE';
select @COM_INSERT:=variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name='COM_INSERT';
select @COM_SELECT:=variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name='COM_SELECT';
select @COM_UPDATE:=variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name='COM_UPDATE';
select @UPTIME:=variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name='UPTIME';
INSERT INTO DbStatus1
SELECT
NOW(),
(@com_select-com_select)/(@uptime-uptime),
(@com_insert-com_insert)/(@uptime-uptime),
(@com_update-com_update)/(@uptime-uptime),
(@com_delete-com_delete)/(@uptime-uptime)
FROM CheckDbStatus1 ORDER BY check_id DESC LIMIT 1;
INSERT INTO CheckDbStatus1 VALUES (NULL,now(),@uptime,@com_select,@com_insert,@com_update,@com_delete);
end;
//
delimiter ;

存儲過程中需要用到兩張表,所以我們還需要建立兩張表,如下:
##創建表DbStatus1
CREATE TABLE `DbStatus1` (
`time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`select_status` float DEFAULT NULL,
`insert_status` float DEFAULT NULL,
`update_status` float DEFAULT NULL,
`delete_status` float DEFAULT NULL,
PRIMARY KEY (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

##創建表CheckDbStatus1
CREATE TABLE `CheckDbStatus1` (
`check_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`uptime` int(10) unsigned DEFAULT NULL,
`com_select` int(10) unsigned DEFAULT NULL,
`com_insert` int(10) unsigned DEFAULT NULL,
`com_update` int(10) unsigned DEFAULT NULL,
`com_delete` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`check_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

G. MySql編寫一個存儲過程

1、delimiter // ,聲明分隔符:DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼(這里如果不懂的話,你可以通過試錯的方法來理解)。
2、編寫存儲過程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ]參數名數據類形...])
例子:
1)create procere proc1(out s int) // 只有輸出
2)create procere proc2(in p_in bigint) // 只有輸入
3)create procere proc15() // 沒有輸入與輸出
4)create procere demo_multi_param(in id bigint,in name varchar(32),out c int) //多輸入與輸出
3、過程體的開始與結束使用BEGIN與END進行標識。
4、select count (*) into s from student; // 過程體,一系列的邏輯語句,sql語句
5、delimiter ; 用完了之後要把分隔符還原。

H. 求一個MYSQL存儲過程的例子

DELIMITER $$

DROP PROCEDURE IF EXISTS `proc_test`$$

CREATE
PROCEDURE `carpo_xianjin`.`proc_test`(IN user_name VARCHAR(50), IN amount VARCHAR(20))
BEGIN
DECLARE v_balance VARCHAR(20);

SELECT balance INTO v_balance FROM userbalance WHERE USER = user_name;

IF v_balance > amount THEN
UPDATE userbalance SET balance = balance - amount WHERE USER = user_name;

INSERT INTO LOG(TYPE) VALUES('修改余額');
END IF;

END$$

DELIMITER ;
看下吧,你沒給腳本,我也沒辦法測試。

I. mysql怎樣使用存儲過程

給你個例子
drop procere if exists call proc_temp;
delimiter $ //存儲過程從$ 開始
create procere proc_temp(
IN startDate VARCHAR(20),//設置傳入的變數,沒有可以不要傳
IN endDate VARCHAR(20))
BEGIN
DECLARE dflag INT(11); //這里可以定義你需要的僅在存儲過程里使用的變數
SET dflag = 0;//初始化
select * from table where time between startDate and endDate ;//你的sql語句,可以一句可以多句
END $//存儲過程從$ 結束
delimiter ;
當上面的選中運行後沒問題,可以選中下面的call xx 運行,上面的代碼沒有改動的話只需要運行一次

熱點內容
神武手游什麼隊伍配置最好 發布:2024-10-08 04:19:05 瀏覽:420
seer資料庫 發布:2024-10-08 04:18:47 瀏覽:477
l3緩存分數下降 發布:2024-10-08 04:10:36 瀏覽:433
linux游戲伺服器 發布:2024-10-08 04:04:17 瀏覽:74
有什麼推薦的網游低配置 發布:2024-10-08 03:17:03 瀏覽:36
淘優惠源碼 發布:2024-10-08 03:17:02 瀏覽:780
linux系統製作 發布:2024-10-08 02:47:15 瀏覽:252
4s緩存怎麼清理 發布:2024-10-08 02:46:42 瀏覽:429
蘋果11面容存儲微信密碼 發布:2024-10-08 02:35:58 瀏覽:764
魔獸243腳本 發布:2024-10-08 02:35:12 瀏覽:640