mysql语法问题
我学习的是oracle的sql语法,然后也想学习一下mysql,今天看了一下书,有几个地方不明白请指教:1。在mysql里的存储过程中有固定的输出语句吗?比如System...
我学习的是oracle 的sql语法,然后也想学习一下mysql,今天看了一下书,有几个地方不明白请指教:
1。在mysql里的存储过程中有固定的输出语句吗?比如System.out.println('aaaa')?
2.是不是只有定义是out参数的时候,我们才可以看到最后输出的值?其他声明的变量我们在执行的时候根本看不到其变化,比如说数值的变化,也就是想调试这段存储过程我该怎么办?
3。在存储过程里,老是有set @XXX之类的,我想知道一下,这个@一般是在哪些地方使用,是怎么个用法,我该怎么使用?这个地方真是越详细越好。
谢谢,请大家指教一下,差了一些资料没太明白,也许是太笨了 展开
1。在mysql里的存储过程中有固定的输出语句吗?比如System.out.println('aaaa')?
2.是不是只有定义是out参数的时候,我们才可以看到最后输出的值?其他声明的变量我们在执行的时候根本看不到其变化,比如说数值的变化,也就是想调试这段存储过程我该怎么办?
3。在存储过程里,老是有set @XXX之类的,我想知道一下,这个@一般是在哪些地方使用,是怎么个用法,我该怎么使用?这个地方真是越详细越好。
谢谢,请大家指教一下,差了一些资料没太明白,也许是太笨了 展开
1个回答
展开全部
1 mysql 的存储过程里,没有固定的输出语句,要输出内容,使用 select .. 形式即可;
select var_a;
select column_a from tb_a limit 2;
2 存储过程里,如果只是输出内容(不进行捕获),用上边1中的select即可;如果调用存储过程后对输出的值进行后续捕获,则需使用 out 指定输出参数;
3 @var_a 表示这是个会话变量,在存储过程里可以直接设置值而不用声明,如
set @var_a = 10;
但并不推荐在存储过程里使用会话变量(因为这种变量在同一个mysql连接是都是生效的,执行完存储后仍存在),推荐使用声明式的临时变量,即以下方式:
declare var_a int;
set var_a = 10;
4 示例
drop PROCEDURE p_a;
create PROCEDURE p_a(out aa int)
begin
declare bb int;
set bb = 10;
select bb;
select * from t_student limit 1;
select CURRENT_DATE();
set aa = bb;
end;
#调用
set @temp = 50;
call p_a(@temp);
select @temp; #@temp 为会话变量,由存储过程返回重设值了。
select var_a;
select column_a from tb_a limit 2;
2 存储过程里,如果只是输出内容(不进行捕获),用上边1中的select即可;如果调用存储过程后对输出的值进行后续捕获,则需使用 out 指定输出参数;
3 @var_a 表示这是个会话变量,在存储过程里可以直接设置值而不用声明,如
set @var_a = 10;
但并不推荐在存储过程里使用会话变量(因为这种变量在同一个mysql连接是都是生效的,执行完存储后仍存在),推荐使用声明式的临时变量,即以下方式:
declare var_a int;
set var_a = 10;
4 示例
drop PROCEDURE p_a;
create PROCEDURE p_a(out aa int)
begin
declare bb int;
set bb = 10;
select bb;
select * from t_student limit 1;
select CURRENT_DATE();
set aa = bb;
end;
#调用
set @temp = 50;
call p_a(@temp);
select @temp; #@temp 为会话变量,由存储过程返回重设值了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询