zoukankan      html  css  js  c++  java
  • mysql 总结二(自定义函数)

    本质:mysql内置函数的一种扩展,本质上与mysql内置函数一样。

    1. 函数必要条件:

        @1:参数(非必备);

        @2:返回值;

    模板

      create  function  function_name

      returns  

      {string|integer|real|decimal}

      routine_body(函数体)

    关于函数体

      (1):函数体由合法的sql语句构成;

      (2):函数体可以是简单的select或insert语句

      (3):函数体如果为复合结构,则使用begin...end语句;

      (4):复合结构可以包含声明,循环,控制结构;

    ------------------------------------------------------我是分割线-------------------------------------------------

    实例:

      返回不带参数的函数:

      CREATE FUNCTION f1() returns VARCHAR(20)

      return NOW();

      返回带参数的函数:

      create FUNCTION ftest1(num1 SMALLINT,num2 SMALLINT)

      RETURNS FLOAT(10,2)
      RETURN (num1+num2)/2;

      创建具有复合结构函数体的自定义函数:

      DELIMITER $$
      DROP FUNCTION IF EXISTS `itcast`.`cost` $$
      CREATE FUNCTION `itcast`.`cutString`(s VARCHAR(255),n INT) RETURNS varchar(255)
      BEGIN
      IF(ISNULL(s)) THEN RETURN '';
      ELSEIF CHAR_LENGTH(s)<n THEN RETURN s;
      ELSEIF CHAR_LENGTH(S)=n THEN RETURN '相等';
      ELSE RETURN CONCAT(LEFT(s,n),'...');
      END IF;
      END $$
      DELIMITER ;

    ---------------------------------------------------------我是分割线------------------------------------------------

    存储过程和自定义函数的区别:

      存储过程实现的功能要复杂些,而函数的针对性更强;

      存储过程可以返回多个值;函数只能有一个返回值;

      存储过程一般独立的来执行;而函数可以作为其它sql语句的组成部分来出现作用等同内置函数)。

    自定义函数实用较少,存储过程实用较多

  • 相关阅读:
    Android中Alarm的机制
    String字符串操作--切割,截取,替换,查找,比较,去空格.....
    时间类(时间戳的各种转换成)
    android 常用时间格式转换代码
    Android时间戳与字符串相互转换
    Android时间对话框TimePickerDialog介绍
    一种基于Qt的可伸缩的全异步C/S架构server实现(一) 综述
    C++ overloading contructor
    特征生成
    Atitit.软件仪表盘(2)--vm子系统--资源占用监測
  • 原文地址:https://www.cnblogs.com/zqsky/p/5910805.html
Copyright © 2011-2022 走看看