MySql存储过程

Posted superfeeling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 

以上是关于MySql存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 代码中调用 MySQL 存储过程?

如何从 PHP 代码中调用 MySQL 存储过程?

如何从 PHP 代码中调用 MySQL 存储过程?

java 登录过程 - android片段,异步任务登录,Asp.net控制器,存储库

[转]MYSQL 创建存储过程

怎么在mysql中查询已建立的存储过程