存贮过程几个问题请教。drop procedure myprog1;create procedure myprog1(in v1 int,out v2 int)
begin
        declare iii int;
set iii=10000;
select iii+v1*10 into v2;
end;declare @vv2 int;
call myprog1(1,@vv2);
select @vv2 as col1;1.变量名前应该以 @ 打头呀。为何在存贮过程中,变量名不能以 @ 打头呢?
2.在存储过程外,为何
declare @vv2 int;
这一句会报错呢?
难道不能用 declare 先定义一个变量吗?变量不定义就能使用吗?

解决方案 »

  1.   

    1.变量名前应该以 @ 打头呀。为何在存贮过程中,变量名不能以 @ 打头呢?@是SESSION级变量,而不带·@的是过程中的变量。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  2.   

    2.在存储过程外,为何
    declare @vv2 int;
    这一句会报错呢?
    SESSION级变量不可以declare ,直接使用不要声明。
      

  3.   

    难道不能用 declare 先定义一个变量吗?变量不定义就能使用吗?不能用 declare 先定义一个SESSION变量
    SESSION变量不定义就能使用
      

  4.   

    谢谢您的指教,我明白了,但是您说的 SESSION变量 是一个什么含义呢?
    是指全局变量吗?