• 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语句来显示。
    */
  • 相关阅读:
    代码签名证书原理和作用
    安装SSL证书有什么作用?
    有关如何修复Android手机上的SSL连接错误的快速指南
    可信时间戳如何生成?时间戳基本工作原理
    全球通用的数字证书产品选购指南
    国密SSL证书申请免费试用
    国密SSL证书免费试用申请指南
    哈希算法的原理和用途详解
    https证书安装无效的主要原因
    Anatomy of a Database System学习笔记
  • 原文地址:https://www.cnblogs.com/dreamhome/p/2738453.html
Copyright © 2020-2023  润新知