mysql语法问题

我学习的是oracle的sql语法,然后也想学习一下mysql,今天看了一下书,有几个地方不明白请指教:1。在mysql里的存储过程中有固定的输出语句吗?比如System... 我学习的是oracle 的sql语法,然后也想学习一下mysql,今天看了一下书,有几个地方不明白请指教:

1。在mysql里的存储过程中有固定的输出语句吗?比如System.out.println('aaaa')?
2.是不是只有定义是out参数的时候,我们才可以看到最后输出的值?其他声明的变量我们在执行的时候根本看不到其变化,比如说数值的变化,也就是想调试这段存储过程我该怎么办?
3。在存储过程里,老是有set @XXX之类的,我想知道一下,这个@一般是在哪些地方使用,是怎么个用法,我该怎么使用?这个地方真是越详细越好。

谢谢,请大家指教一下,差了一些资料没太明白,也许是太笨了
展开
 我来答
gwbnet
2013-05-11 · TA获得超过893个赞
知道小有建树答主
回答量:350
采纳率:100%
帮助的人:216万
展开全部
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 为会话变量,由存储过程返回重设值了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式