执行存储过程的java语句有哪些 执行储存过程的sql语句_sql 语句 存储 date


大家晚上好,我是阿涛。

执行存储过程的java语句有哪些 执行储存过程的sql语句_sql 语句 存储 date_02

今天的主题是SQL存储过程,存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。

在工作里也会经常遇到重复性的工作,这时候就可以把常用的SQL写好存储起来(比如根据身份证计算年龄,根据超市消费记录计算每个月消费总额,消费次数等等),这就是存储过程。

【1】.如何使用存储过程

1.1 无参数的存储过程

create procedure 存储过程名称()begin <sql语句> ;end;

实例1:查询日期

# MYSQL中DELIMITER //create procedure q_date() begin  select date from db_name.tablename;end //DELIMITER ;

为什么有DELIMITER //,"DELIMITER //" 语句的作用是将MYSQL的结束符设置为//,因为MYSQL默认的语句结束符为分号; ,存储过程中的SQL语句需要分号来结束,为了避免与存储过程中SQL语句结束符相冲突,需要使用DELIMITER 改变存储过程的结束符,并以"END //"结束存储过程。存储过程定义完毕之后再使用DELIMITER ;恢复默认结束符。DELIMITER 也可以指定其他符号为结束符。注意:当使用DELIMITER命令时,应该避免使用反斜杠(\)字符,因为反斜杠是MYSQL的转义字符!!!

其实这个存储过程跟SAS的宏函数是很像很像的,功能都是为了简化一些重复操作。

调用:

call q_date();

结果:

执行存储过程的java语句有哪些 执行储存过程的sql语句_执行存储过程的java语句有哪些_03

1.2 有参数的存储过程

create procedure 存储过程名称(参数1,参数2,...)begin <sql语句> ;end;

实例2:

增加参数价格,查询开盘价为XX的日期

DELIMITER //create procedure q_date_price(price float(10)) begin  select date,open from db_name.tablename where open=price;end //DELIMITER ;

调用:带参数

call q_date_price(20); # 查询open价格为20的日期


结果:

执行存储过程的java语句有哪些 执行储存过程的sql语句_sql存储过程模糊查询_04

1.3 默认参数的存储过程

前面的存储过程名称后面是create procedure name (in/out/inout,参数),括号里面只包含参数的类型和名字,方便调用。

in 输入参数:参数初始值在存储过程前被指定为默认值,在存储过程中修改该参数的值不能被返回;

out输出参数:参数初始值为空,该值可在存储过程内部被改变,并可返回;

inout输入输出参数:参数初始值在存储过程前被指定为默认值,并且可在存储过程中被改变和在调用完毕后可被返回。

对了如果要删除的话,drop procedure name 就可。

注意:定义不同的存储过程,要使用不同的存储过程名称,相同的存储过程的名字会引起系统报错


End

作者:是阿涛呀 

半壶水全栈工程师,好读书,甚喜之