数据库自定义函数

一、函数

  在数据库中都有函数,这些函数属于系统函。除此之外用户也可以编写用户自定义函数。用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其value被称为参数。函数一般功能比较简单,对于mysql函数只有传入参数,不像存储过程一样,有输入输出参数。

  数据库函数特点如下:

  • 存储函数将向调用者返回一个且仅返回一个结果值。
  • 存储函数嵌入在sql中使用的,可以在select中调用,就像内建函数一样,比如cos()、hex()。
  • 存储函数的参数类型类似于IN参数。

二、自定义函数

自定义函数简单语法:

CREATE FUNCTION 函数名称(
  变量名称 类型,
  变量名称 类型
)
RETURN 类型
BEGIN
  -- 声明, 语句要完成的操作,
RETURN 变量;
END;

三、实例

  例子中的函数使用mysql作为例子。
表结构如下:

DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

  1、不带参数的函数

DROP FUNCTION IF EXISTS get_count;
 -- 定义函数
CREATE FUNCTION get_count()
RETURNS INT -- 返回值类型
BEGIN
     RETURN (SELECT COUNT(*) FROM person);
END;
-- 调用
SELECT get_count() AS ‘total‘;

  表示获取person表的所有记录,没有参数,有数值返回值。

  2、带有参数的函数

DROP FUNCTION IF EXISTS get_age;
CREATE FUNCTION get_age(
         id INT(11)  -- 参数(参数可以多个)
)
RETURNS INT(11)    -- 返回值类型(只能有一个返回值)
BEGIN
    DECLARE age INT; -- 定义变量
    SET age = (SELECT p.age FROM person p where p.id = id);
    IF(ISNULL(age)) THEN -- 查询到的年龄不存在(如id错误,没有记录存在)
        RETURN 0;
    ELSE
        RETURN age;
    END IF;
END;
-- 函数调用
SELECT get_age(2) as ‘age‘;

  表示通过id获取年龄,有id参数,有数值返回值。

  3、函数其他命令

SELECT get_age(2);    -- 函数的调用
SHOW FUNCTION STATUS; -- 查看所有函数
SHOW CREATE FUNCTION get_age; -- 查看具体函数
DROP FUNCTION  get_age;  -- 删除查看具体函数

  函数的功能一般都是比较简单的,如求某个值,格式转换等。不像存储过程,一般逻辑都比较复杂。

数据库自定义函数

时间: 2024-10-14 01:46:29

数据库自定义函数的相关文章

Jpa 重写方言dialect 使用oracle / mysql 数据库自定义函数

在使用criteria api进行查询时 criteriaBuilder只提供了一个部分标准的sql函数,但当我们需要使用oracle特有的行转列函数wm_concat或 mysql特有的行转列函数group_concat时,就只能自己封装了, criteriaBuilder提供了一个封装函数的方法: /** * Create an expression for the execution of a database * function. * @param name function name

数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数

outfile    将数据库的数据导出 select * into outfile 'e://mysqloutfile//1.txt' from 表格名; 备份与还原 不再mysql目录下进行备份,mysqldump -uroot -p 数据库名 +表格名 > 具体的路径名(你要导入到哪里) 如果你想得到多张表的那么就在表格后面加一个表格 还原: 先删除数据库的所有东西 如果删除不了,那么就是还有没有删除干净 新建一个数据库 ,用数据库 找到文件   source +具体的文件;将数据导入 视

greenplum数据库python自定义函数

greenplum数据库(下面简称gp数据库)支持自定义函数,下面介绍的是python编写的自定义简单函数.聚类函数较复杂,自我感觉不适合在gp数据库中编写. python自定义函数说明了只要python能对行级数据做的处理,gp都能做. 样例:python对json做处理返回多行. create or replace function public.json_parse(data text) returns setof text AS $$ import json try: mydata=js

查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数

查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06|  分类: SQL SERVER|举报|字号 订阅 (1)查询SQLServer2005中某个数据库中的表结构 SELECT TOP 100 PERCENT --a.id,CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,CASE WHEN a.colorder = 1 THEN isnull(f.v

数据库之mysql篇(6)—— mysql常用函数函数/自定义函数

常用函数 运算函数 我相信你都能看懂,所以以上的不再做过多解释 然后还有个,前面漏掉的between and: 意指10是否在0到20之间,如果是返回1,否则返回0 日期函数 这个要稍微注意一下参数,第一个是起始日期,interval是固定的,2则是需要加的日期数,后面的day则是单位,还可以是week,year  信息函数 聚合函数 以上的因为我这个test数据库下的表没有很好的数据,所以操作得到的结果感觉很怪,各位见谅,你知道怎么用就可以了 加密函数 以上两种加密函数,我个人觉得都不是很安全

MySQL数据库高级(二)——自定义函数

MySQL数据库高级(二)--自定义函数 一.自定义函数简介 自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同.自定义函数的两个必要条件:A.参数B.返回值(必须有).函数可以返回任意类型的值. 二.自定义函数的使用 1.自定义函数语法 CREATE?FUNCTION?function_name(parameter_nametype,[parameter_name type,...]) RETURNS?{STRING|INTEG

数据库系列之mysql 自定义函数function,函数和存储过程的区别

mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相应的要求,语法如下, 创建新函数: Create function function_name(参数列表) returns返回值类型 函数体内容 相关说明, 函数名:应该合法的标识符,并且不应该与已有的关键字冲突.一个函数应该属于某数据库,可以使用db_n

MYSQL数据库重点:流程控制语句、自定义函数、存储过程、触发器、事件、视图

一.流程控制语句 1.分支结构 IF分支: IF 条件1 THEN 语句;ELSEIF 条件2 THEN 语句; ......ELSE 语句;END IF; CASE分支: CASE [条件] WHEN 条件1 THEN 语句1WHEN 条件2 THEN 语句2 ......ELSE 语句nEND CASE 2.循环结构 LOOP循环: [begin_label:] LOOP 语句群END LOOP [end_label] WHILE语句: [begin_label:] WHILE 条件 DO

Oracle自定义函数1

用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样,如max(value)函数,其中,value被称为参数.函数参数有3种类型. IN 参数类型:表示输入给函数的参数. OUT 参数类型:表示参数在函数中被赋值,可以传给函数调用程序. IN OUT参数类型:表示参数既可以传值也可以被赋值. 1.语法格式: SQL语法方式创建的语法格式为: CREATE OR REPLACE FUNCTION function_name         /*函数名称*/(Para