mysql 儲存過程(一)

2021-07-22 02:03:53 字數 2346 閱讀 8658

遍歷庫中所有表, 更新指定欄位為指定的值。(*有的表存在該欄位,有的則不存在)

drop

procedure

ifexists update_orgcode;

delimiter//

create

procedure update_orgcode(in send_system varchar(50),in upload_org_code varchar(50),in provider_name varchar(50))

begin

declare tablename varchar(30);

/* 遍歷游標結束標誌 */

declare done int default 0;

declare err,err2 int default 0;

/* 定義預處理sql語句 */

declare sql_for_update varchar(500);

/* 申明游標 */

declare rs cursor for select table_name from information_schema.tables where table_schema='ehr10';

/* 游標異常處理 */

declare continue handler

forsqlstate

'02000'

set done = 1;

/*when "not found" occur,just continue,這個是個條件處理,針對not found的條件*/

/* update 異常處理1 */

declare continue handler

for1054

set err = 1;

/*when "unknown column 'send_system' in 'field list'" occur,just continue,這個是個條件處理,針對not found的條件*/

/* update 異常處理2 */

declare continue handler

for1062

set err2 = 1;

/*[err] 1062 - duplicate entry '10839-xianfengyl-xianfengyl' for key 'primary'" occur,just continue,這個是個條件處理,針對not found的條件*/

/* 開啟游標 */

open rs;

/* 獲取表名 */

fetch rs into tablename;

/* 遍歷開始 */

repeat

set sql_for_update = concat("update ",tablename," set send_system = '",send_system,"',upload_org_code='",upload_org_code,"',provider_name='",provider_name,"';");

-- 拼接查詢sql語句

set @sql = sql_for_update;

prepare stmt from @sql; -- 預處理動態sql語句

if err then set err = 0;

-- 預處理sql 不成功, 改變 重置 err

else -- 預處理 sql 成功, 執行 update sql

execute stmt ; -- 執行sql語句

deallocate prepare stmt; -- 釋放prepare

endif;

if err2 then select tablename;

set done = 1;

-- 輸出表名,退出遍歷

endif;

/* 除錯 */

-- select tablename;

/* 獲取表名 */

fetch rs into tablename;

/* 遍歷結束 */

until done end repeat;

/* 關閉游標 */

close rs;

end;

//delimiter;

我的mysql學習心得(十) 自定義儲存過程和函式

mysql儲存過程詳解

mysql儲存過程之游標遍歷資料表

mysql儲存過程—7、游標(cursor)

mysql儲存過程除錯?

mysql 儲存過程中使用動態sql語句

mysql儲存過程中捕獲異常的方法

mysql儲存過程之異常處理篇

mysql儲存過程(一)

使用mysql也挺久了,但是對於mysql的儲存過程一直沒有研究過,最近得空看了一些資料,對儲存過程算是略有了解吧,下面就是學習過程中的一些心得體會了。在正式介紹儲存過程之前我們需要知道什麼是儲存過程?通過上述語句我們可以提煉以下幾點 1.儲存過程是特定功能sql語句的集合 2.儲存過程儲存在資料庫...

MYSQL儲存過程一

b 一 儲存過程 b 儲存過程是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定的儲存過程的名字 並給出相關引數來執行它。b 二 優點 b 1 較快的執行速度。如果某一操作包含大量的sql語句或者分別被多次執行,那麼儲存過程比批處理的執行速度要快。因為儲存過程是預編譯的,在...

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...