zoukankan      html  css  js  c++  java
  • MySql函数

    DELIMITER $$

    DROP FUNCTION IF EXISTS test_fun1$$

    CREATE FUNCTION test_fun1 (df1 INT) RETURNS VARCHAR(20) DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '这是函数的描述'

    BEGIN SET df1 = 13; INSERT INTO testtable1(NAME)VALUES('li'); SELECT COUNT(*) INTO @cun FROM testtable1; RETURN @cun+"";

    END$$

    DELIMITER ;

    SET @df1 = 12; SET @df2 = test_fun1(@df1); SELECT @df1,@df2,@cun;

    /*

    REATE FUNCTION 方法名 (参数1 类型,参数2 类型,...) RETURNS 返回数据类型 [[NOT] DETERMINISTIC] [CONTAINS SQL/NO SQL/READS SQL DATA/MODIFIES SQL DATA] [SQL SECURITY DEFINER/INVOKER ] [COMMENT '函数说明'] BEGIN 函数体..;

    RETURN 数据; END

    方法的参数没有OUT,INOUT类型,一律IN类型

    DETERMINISTIC会把返回结果高速缓存,每次调用函数如果输入参数相同则返回的是高速缓存的结果 NOT DETERMINISTIC相反不高速缓存,每次重新求值返回结果 默认是NOT DETERMINISTIC 通常要明确为DETERMINISTIC或者标注为NO SQL否则会报错

    一些特征提供方法使用数据的内在信息。 CONTAINS SQL表示方法不包含读或写数据的语句。 NO SQL表示方法不包含SQL语句。 READS SQL DATA表示方法包含读数据的语句,但不包含写数据的语句。 MODIFIES SQL DATA表示方法包含写数据的语句。如果这些特征没有明确给定。 默认的是CONTAINS SQL。

    SQL SECURITY特征可以用来指定 方法该用创建方法者的许可来执行,还是使用调用者的许可来执行。默认值是DEFINER。 在SQL:2003中者是一个新特性。创建者或调用者必须由访问方法关联的数据库的许可。在MySQL 5.1中,必须有EXECUTE权限才能执行方法。 必须拥有这个权限的用户要么是定义者,要么是调用者,这取决于SQL SECURITY特征是如何设置的。

    MySQL存储sql_mode系统变量设置,这个设置在方法被创建的时候起作用,MySQL总是强制使用这个设置来执行方法。

    COMMENT子句是一个MySQL的扩展,它可以被用来描述 存储程序。这个信息被SHOW CREATE PROCEDURE和 SHOW CREATE FUNCTION语句来显示。 */

  • 相关阅读:
    微服务架构总结
    微服务-网关服务
    HttpClient-RestTemplate-Feign
    RPC和REST
    Springmvc的拦截器执行顺序及各方法作用
    秒杀系统优化方案(下)吐血整理
    秒杀系统优化方案(上)吐血整理
    分布式session的管理
    缓存设计——缓存和数据库的数据一致性
    个人理解的javascript作用域链与闭包
  • 原文地址:https://www.cnblogs.com/qq75077027/p/3103954.html
Copyright © 2011-2022 走看看