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

mysql存儲過程update

發布時間: 2022-08-06 19:16:13

『壹』 mysql存儲過程能返回update更新操作的結果嗎

在存儲過程中使用ROW_COUNT()
mysql> select * from a1;
-> //
+------+-------+
| id | name |
+------+-------+
| 1 | timac |
+------+-------+
1 row in set (0.00 sec)
mysql> \d ;
mysql> update a1 set name='king' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> insert into a1 values(2,'K1'),(3,'K2');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 2 |
+-------------+
1 row in set (0.00 sec)

mysql> update a1 set name='kings' where id=4;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)

只有返回的row_count()值大小還判斷是否成功

『貳』 MySQL在原存儲過程中增加update修改記錄行報1064錯誤請教大神

1064是SQL的語法錯誤,最簡單最低級的錯誤而已。
你這個update語句本身就有問題:

UPDATE woic SET seq=comments WHERE seq='000' AND check_passed=0;
這里的comments 應該是傳進來的吧?你如果不傳進來就要給常量。

『叄』 有誰可以給個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;

『肆』 MySql存儲過程中update表 無變化,具體代碼如下, 求大神解釋~!

看看你的guid的值,是不是空的

『伍』 mysql的存儲過程中如何在update修改表時,同時修改返回的參數

你想返回的是column_1的名字 還是column_1的值

另外 你一次修改的是單條數據還是多條數據

『陸』 mysql存儲過程出現鎖表鎖行的情況怎麼解決

行鎖的等待

在介紹如何解決行鎖等待問題前,先簡單介紹下這類問題產生的原因。產生原因簡述:當多個事務同時去操作(增刪改)某一行數據的時候,MySQL 為了維護 ACID 特性,就會用鎖的形式來防止多個事務同時操作某一行數據,避免數據不一致。只有分配到行鎖的事務才有權力操作該數據行,直到該事務結束,才釋放行鎖,而其他沒有分配到行鎖的事務就會產生行鎖等待。如果等待時間超過了配置值(也就是 innodb_lock_wait_timeout 參數的值,個人習慣配置成 5s,MySQL 官方默認為 50s),則會拋出行鎖等待超時錯誤。


如上圖所示,事務 A 與事務 B 同時會去 Insert 一條主鍵值為 1 的數據,由於事務 A 首先獲取了主鍵值為 1 的行鎖,導致事務 B 因無法獲取行鎖而產生等待,等到事務 A 提交後,事務 B 才獲取該行鎖,完成提交。這里強調的是行鎖的概念,雖然事務 B 重復插入了主鍵,但是在獲取行鎖之前,事務一直是處於行鎖等待的狀態,只有獲取行鎖後,才會報主鍵沖突的錯誤。當然這種 Insert 行鎖沖突的問題比較少見,只有在大量並發插入場景下才會出現,項目上真正常見的是 update&delete 之間行鎖等待,這里只是用於示例,原理都是相同的。


三、產生的原因根據我之前接觸到的此類問題,大致可以分為以下幾種原因

『柒』 Mysql 存儲過程 UPDATE語句 欄位=傳遞過來的參數字元串參數

mysql存儲過程支持用表作為參數。
這個問題在MySQL 5.0以前非常麻煩,但是在MySQL 5.0.13版之後,由於引入了PREPARE語句,一切變得簡單了。
例子如下(已驗證):
DROP PROCEDURE IF EXISTS `newtable`;
CREATE PROCEDURE `newtable`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('CREATE TABLE ', tname, ' (id int NOT NULL AUTO_INCREMENT, name varchar(64) DEFAULT NULL, PRIMARY KEY (`id`))');
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
call newtable('abc');

『捌』 mysql批量更新存儲過程怎麼寫

java">createprocerebatchUpdate(innint)
begin
declareinParamintdefaultn;
declareiintdefault1;
declareidint;
declareusernamevarchar(255);
declareintegralvarchar(255);
declarerankingint;
declare_resultSetcursorforselecta.id,a.username,a.integral,a.rankingfromuseraorderbya.integraldesclimitinParam;
open_resultSet;
whilei<=inParamdo
fetch_resultSetintoid,username,integral,ranking;
updateuseraseta.ranking=iwherea.id=id;
seti=i+1;
endwhile;
close_resultSet;
end;

mysql>select*fromuser;
+----+----------+----------+---------+
|id|username|integral|ranking|
+----+----------+----------+---------+
|1|abc|1|0|
|2|abc|2|0|
|3|abc|3|0|
|4|abc|4|0|
|5|abc|5|0|
|6|abc|6|0|
|7|abc|7|0|
|8|abc|8|0|
|9|abc|9|0|
|10|abc|10|0|
|11|abc|11|0|
|12|abc|12|0|
|13|abc|13|0|
|14|abc|14|0|
+----+----------+----------+---------+
14rowsinset

mysql>callbatchUpdate(14);
QueryOK,1rowaffected

mysql>select*fromuser;
+----+----------+----------+---------+
|id|username|integral|ranking|
+----+----------+----------+---------+
|1|abc|1|14|
|2|abc|2|13|
|3|abc|3|12|
|4|abc|4|11|
|5|abc|5|10|
|6|abc|6|9|
|7|abc|7|8|
|8|abc|8|7|
|9|abc|9|6|
|10|abc|10|5|
|11|abc|11|4|
|12|abc|12|3|
|13|abc|13|2|
|14|abc|14|1|
+----+----------+----------+---------+
14rowsinset

『玖』 mysql 存儲過程中update影響行數為0,回滾

使用FOUND_ROWS() 獲得影響的行數,再用IF判斷是否等於0就行了。

--開始事務
starttransaction;

callsetCoin(zjAmount,0,`uid`,liqType,`type`,info,_betId,serializeId,'');
updateblast_betssetlotteryNo=_kjData,zjCount=_zjCount,bonus=zjAmount,fanDianAmount=_fanDianAmountSelfwhereid=_betId;
IFFOUND_ROWS()=0THEN
ROLLBACK;
ELSE
COMMIT;
ENDIF;
commit;
熱點內容
在jsp中使用資料庫 發布:2024-03-29 19:29:01 瀏覽:786
dns伺服器江川區ip地址 發布:2024-03-29 18:47:53 瀏覽:328
sql統計百分比 發布:2024-03-29 18:47:14 瀏覽:692
javatoolsfor 發布:2024-03-29 18:17:55 瀏覽:900
linuxi2c驅動 發布:2024-03-29 18:09:56 瀏覽:672
junit源碼下載 發布:2024-03-29 18:00:10 瀏覽:526
本田雅閣壓縮機不工作 發布:2024-03-29 17:59:13 瀏覽:601
溯源碼可以偽造嗎 發布:2024-03-29 17:54:45 瀏覽:57
北京編程傳 發布:2024-03-29 17:54:44 瀏覽:436
編程畫曲線 發布:2024-03-29 17:48:59 瀏覽:60