mysql中創建用戶自定義函數
阿新 • • 發佈:2018-05-31
mysql 用戶自定義函數總有一些復雜的邏輯我們還需要多處使用,此時就顯現出函數的重要性。
mysql函數的要素
- 函數名
- 參數列表
- 函數體
- 返回值
定義語法
create function fun_name(參數列表) returns 返回值類型 函數體
示例
不帶參數
delimiter $$ create function sayhello() returns varchar(20) begin return ‘hello‘; end$$ delimiter ;
調用示例:
select sayhello();
sayhello() |
---|
hello |
帶參數(參數需要標明數據類型)
delimiter $$ create function sayHelloToSomeOne(name varchar(20)) returns varchar(25) begin set @str = concat(‘hello ‘,name); return @str; end $$ delimiter ;
調用示例:
select sayHelloToSomeOne(‘Dany‘);
sayHelloToSomeOne(‘Dany‘) |
---|
hello Dany |
函數調用過後我們驗證一下@str變量是否依然可以訪問。
select @str;
@str |
---|
hello Dany |
@str依然可用,說明@str的作用域是全局的。
帶多個參數
多個參數用逗號 , 分隔。
函數中的局部變量
- 參數(勉強認為是局部變量),因為參數傳遞進來只能在函數內部使用。
- declare 定義局部變量
之前研究過以@開頭的變量是全局變量,因為即使是在函數內部定義的變量例如:@aa ,在調用過函數後,@aa的值在外部我們依然可以得到,這就很明顯的告訴我們,@aa是全局變量。
語法:
DECLARE var_name [, var_name] ... type [DEFAULT value];
例如:
delimiter $$ create function sayHelloToSomeOneVarLocal(name varchar(20)) returns varchar(30) begin declare str varchar(30); set str = concat(‘hello ‘,name); return str; end $$ delimiter ;
select sayHelloToSomeOneVarLocal(‘xiaogang‘);
sayHelloToSomeOneVarLocal(‘xiaogang‘) |
---|
hello xiaogang |
函數調用之後我們再試圖去訪問變量str,會報錯。
mysql中創建用戶自定義函數