Mysql儲存過程修改定義者

2021-06-19 20:01:11 字數 530 閱讀 1818

mysql中,執行儲存過程時會檢查過程的定義使用者是否存在,如果不存在,即使當前使用者有execute許可權,也會報錯

the user specified as a definer (『') does not exist

如果想要繼續執行這些過程就必須修改過程的定義使用者,語句如下:

mysql>update mysql.proc set definer='usename' where name='proc_name' and db='mydb';

修改完後,使用者還需重新連線才能執行。

我們也可以在建立儲存過程時指定 sql security invoker 選項,這樣在呼叫儲存過程時則只檢查呼叫者是否具有執行許可權

delimiter $$

create

/*[definer = ]*/

procedure `test`.`a`()

sql security invoker  #不檢查定義使用者    

begin

...end$$

delimiter ;

mysql定義過程 定義MySql儲存過程

建立乙個不帶返回值的儲存過程 delimiter drop procedure if exists proc name create procedureproc name in num1 int,in num2 int begin set a 2000000001 set d 20000001 se...

Mysql修改儲存過程

alter procedure 儲存過程名 特徵 指定了儲存過程的特性,可能的取值有 contains sql 表示子程式包含 sql 語句,但不包含讀或寫資料的語句。no sql 表示子程式中不包含 sql 語句。reads sql data 表示子程式中包含讀資料的語句。modifies sql...

mysql 儲存過程 迴圈修改

mysql 迴圈修改 儲存過程 delimiter create procedure my proc begin declare billid int declare moneyorder decimal 10,2 declare stop int default 0 declare my curs...