• MySql存储过程


    #用户变量
    set @t = now();
    SELECT DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
    
    #使用SET初始化用户变量
    SET @ab = 'abcee';
    SELECT @ab := 'fghi';
    SELECT @ab;
    
    #使用SELECT初始化用户变量并赋值
    SELECT @var1 := '123456789';
    SELECT @var1;
    
    #判断存储过程是否存在并删除;
    DROP PROCEDURE IF EXISTS MYpROC;
    
    CREATE PROCEDURE MyProc
    (
    IN dMonth INT,            #会话变量
    IN dDay INT,                #会话变量
    OUT dTotalCount INT    #会话变量
    )
    begin
        #声明会话变量
        DECLARE MyVar int;
        
        #使用SELECT语句为用户变量赋值
        SELECT @var1 := '9999999';
        
        #条件查询
        SELECT * from dc_log WHERE MONTH(AddTime) = dMonth AND Day(AddTime) = dDay;
        
        #通过SELECT……INTO语句赋值
        SELECT COUNT(1) INTO dTotalCount from dc_log WHERE MONTH(AddTime) = dMonth AND Day(AddTime) = dDay;
        
        #通过SET语句赋值
        SET MyVar = dTotalCount;
        
        #输出会话变量
        SELECT MyVar;
    end
    
    #调用存储过程
    CALL myproc(9,21,@total);
    
    #输出参数
    select @total;
    
    
    SELECT * from dc_log;
    
    
    #显示所有全局变量
    show global variables;
    
    #查询最后一个自增ID
    SELECT @@IDENTITY;
    
    #查询本地计算机名称
    SELECT @@hostname;
    
    #查询MYSQL版本
    SELECT @@Version;
    
    #声明SQL变量,并使用英文的?作为占为符
    set @strSQL = 'SELECT * FROM dc_log WHERE UserName = ?';
    #预编译SQL,并赋值
    PREPARE stmt1 FROM @strSQL;
    #声明要传递的参数变量(用户变量)
    set @uname = 'admin';
    #执行SQL语句
    EXECUTE stmt1 USING @uname;

    单独使用EXECUTE的存储过程示例:

    #判断存储过程是否存在并删除;
    DROP PROCEDURE IF EXISTS execSQL;
    
    CREATE PROCEDURE execSQL
    (
    )
    BEGIN
        DECLARE strSQL varchar(500);
        SET strSQL = 'SELECT * FROM dc_mail';
        
        -- 定义用户变量(格式@,不需要定义它的数据类型) 
        set @sql =strSQL;
        -- 编译拼接的SQL字符串
        PREPARE _executeSql from @sql;
        -- 执行编译后的SQL语句
        EXECUTE _executeSql;
        
        -- 释放编译后的SQL语句
        DEALLOCATE PREPARE _executeSql;
    END
    
    CALL execSQL;
  • 相关阅读:
    浏览器行为:Form表单提交
    js中new到底做了什么?如何重写new?
    vue与react对比
    关于css中touch-action属性 在移动端开发中遇到的问题
    国际化:node导语言包
    django 开发忘记密码通过邮箱找回功能
    django 通过ajax完成邮箱用户注册、激活账号
    django 通过ajax完成登录
    django 通过邮箱和用户名都能登录
    django引入模板时,部分css文件渲染不成功失灵引入不成功
  • 原文地址:https://www.cnblogs.com/superfeeling/p/13062784.html
Copyright © 2020-2023  润新知