sql -变量与存储过程

-- 变量
-- 查看系统全局变量
show  GLOBAL variables;
show  GLOBAL variables like '%char%';

-- 查看系统会话变量
show SESSION variables;
show SESSION variables like '%char%';

-- 查看指定的变量
SELECT @@global.autocommit;
SELECT @@session.tx_isolation;

-- 设置变量
set @@global.tx_isolation ='read-COMMITTED';
set @@session.tx_isolation ='read-COMMITTED';







-- 设置用户变量,用一个@设置(作用域在本次连接中,类似于系统变量中的会话变量)
-- 方式一:可以用 = 也可以用:=
set @name :='棋棋';
set @name :=03;

-- 方式二:通过select into来赋值,将count(*)的结果赋值给变量name
SELECT count(*) into @name from l;
SELECT @name;


-- 设置局部变量(作用域旨在begin end中)

-- 声明:
-- declare 变量名 类型;(但是这一种实践失败了,会报错)
-- declare 变量名 类型 default 值;
declare bb int DEFAULT 100;
SELECT @bb;
-- 赋值:跟用户变量一样,一般不用加@符号,需要限定类型。
set @bb =120;
-- 变量运算
set @a =1;
set @b =5;
set @c =@a+@b;
SELECT @c;

-- 存储过程
-- 创建,如果begin end里面只有一句话,那么begin end可以省略
-- 存储过程里面的每一条sql语句结尾都要加;如果是存储过程的结尾则加上自己定义的标识符,标识符定义方式为:delimiter 标识符
delimiter $
-- create procedure Myprocedure(参数列表)
-- BEGIN
-- 	一组sql语句
-- end

-- 参数包含三部分,参数模式,参数名,参数类型
-- 参数模式是in ,out ,inout
-- in指参数需要外部传入值,out指参数可以作为返回,inout指参数既要传入,又可以传出

-- 存储过程调用语法
-- call 存储过程名(实参列表)

delimiter $
create procedure myprocedure()
begin
		SELECT * from l;
end;

CALL myprocedure();

-- 存储过程初尝试
create procedure myprocedure3(in a int)
BEGIN 
	DECLARE result int DEFAULT 0;
	SELECT COUNT(*)  into result from
	l where l.id =a;
	SELECT IF(result >0,'成功','失败') as '结果';
end;

CALL myprocedure3(5);


CREATE procedure myprocedure4(in a int,out result varchar(10))
BEGIN
	SELECT COUNT(*) into result from l where l.id =a  ;
END;

set @result ='';
call myprocedure4(10,@result);
SELECT @result;


create procedure myprocedure5(inout a int,inout b int)
BEGIN
	set a =a*2;
	set b =b*2;
END

set @a =10;
set @b =630;

call myprocedure5(@a,@b);
SELECT @a,@b;

CREATE procedure myprocedure6(in mydate TIMESTAMP ,out result varchar(10))
begin 
	SELECT DATE_FORMAT(mydate,'%y年%m月%d日') into result;
end

CALL myprocedure6(NOW(),@str);
SELECT @str;

-- 查看存储过程信息
show create procedure myprocedure5;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值