--建立临时表,问题1
create TEMPORARY table tmp_table(s1 int,s2 varchar(30))--select * from tmp_table
--建立临时变量,问题2
set @v=0;
--循环执行插入操作,问题3
while @v<20 do
      insert into tmp_table values(@v,concat('测试数据:', @v))
      set @v=@v+1
end while问题1:MYSQL创建临时表,用TEMPORARY ,临时表只有在连接断开后才清除,在MSSQL里是#tablename,在MSSQL里还有个
create @tablename table(),这个临时表只有在执行语句的时候才创建,执行完立刻清除的。在MYSQL里怎么实现??
问题2:创建临时变量
declare @a int 错误,此为MSSQL语法。
set @a=5 正确,这样感觉@a都不需要定义了,直接赋值啊?
MYSQL里面怎么定义临时变量??
问题3:上面的代码复制到MYSQL-FRONT里执行,不通过。我的目的就是循环往临时表里插入20条记录。应该如何修改??新手,对MSSQL熟悉,刚开始接触MYSQL,还望各位GGJJDDMM帮忙,谢谢在先。

解决方案 »

  1.   

    补充:
    1:不想通过存储过来来做。。直接到MYSQL-FRONT里面写命令完成。
    2:MYSQL版本5.0
    3:在线等。
    4:沙发自己坐。
      

  2.   


    delimiter //
    --建立临时表,问题1
    create TEMPORARY table tmp_table(s1 int,s2 varchar(30));--select * from tmp_table
    --建立临时变量,问题2
    set @v=0;
    --循环执行插入操作,问题3
    while @v<20 do
          insert into tmp_table values(@v,concat('测试数据:', @v))
          set @v=@v+1
    end while;
    //
      

  3.   

    建立存储过程:
    drop procedure if exists P_TEST;
    create procedure P_TEST()
    begin
    drop table if exists tmp_table;
    create TEMPORARY table tmp_table(s1 int,s2 varchar(30));

    -- select * from tmp_table
    -- 建立临时变量,问题2
    set @v=0;
    -- 循环执行插入操作,问题3
    while @v<20 do
          insert into tmp_table values(@v,concat('测试数据:', @v));
          set @v=@v+1;
    end while;
    end;
    -- ------------------------------------执行存储过程:
    call P_TEST();
    -- ------------------------------------
    查看数据:
    select * from tmp_table;
    -- ------------------------------------
      

  4.   

    貌似命令行不可以执行while循环。
      

  5.   


    MYSQL中没有,你只能自行清除 , 或者等session 结束。
    MYSQL中 @ 有特殊的意义,表示SESSION / GLOBAL 变量,所有应该 declare a int 注意终结符 ; 的设置,上面的朋友已经给你例子了。否则MYSQL看到;就以为你的语句已经结束开始运行了。
      

  6.   

    TO:ACMAIN_CHM1:在MYSQL-FRONT里面输入
    declare a int 
    运行,提示SQL执行错误 #1064 ,加分号断句declare a int ;,也一样的错误提示。
    2:注意终结符 ; 的设置,上面的朋友已经给你例子了。否则MYSQL看到;就以为你的语句已经结束开始运行了我修改如下declare v intset v=0 
    -- 循环执行插入操作,问题3 
    while @v <20 do 
          insert into tmp_table values(@v,concat('测试数据:', @v))
          set @v=@v+1
    end while; 
    实际上第一条语句就报错了。。现在这样说吧,不用存储过程,可以用SQL语句直接循环插入20条记录到表里吗??我要的SQL,可以直接复制到MYSQL-FRONT里执行注意红色字体。
      

  7.   

    现在这样说吧,不用存储过程,可以用SQL语句直接循环插入20条记录到表里吗??我要的SQL,可以直接复制到MYSQL-FRONT里执行注意红色字体。MYSQL没有SQLSERVER、ORACEL、ASA中的递归查询,如果你不用SP,就用20条SQL语句插入吧
      

  8.   

    delimiter //需要用这个告诉MYSQL,下面的终结符不再是; 了。
      

  9.   

    mysql不能用循环实现 除非存储过程set @A=4;
    是创建临时会话级的变量