本帖最后由 nightgoblin 于 2012-03-14 15:27:45 编辑

解决方案 »

  1.   

    DELIMITER $$
    DROP PROCEDURE IF EXISTS test$$
    CREATE PROCEDURE test()
    BEGIN
    DECLARE v_a INT;
    DECLARE v_b VARCHAR(10);
    SELECT aid INTO v_a FROM a;
    IF v_a=1 THEN SET v_b='b1' ;
    ELSEIF v_a=2 THEN SET v_b='b1';
    ELSE SET v_b='bn';
    END IF;
    INSERT INTO b VALUES(v_a,v_b);
    END$$
    DELIMITER ;
      

  2.   

    创建表b那块是复制错误吧?另外我也不知道对不对,varchar后面是不是必须跟着大小?比如(20)什么的
      

  3.   

    varchar确实要加后面的数值哦
      

  4.   

    按你的方法修改了,创建成功了,但是调用这个存储过程却报错了:
    Procedure execution failed
    1172 - Result consisted of more than one row
      

  5.   

    SELECT aid INTO v_a FROM a;
    检查结果
      

  6.   

    那我要实现将a表中aid复制到b表中的bid列上,b表中的bdsc都是bn,那这个用存储过程怎么实现呢?是不是要用游标??
      

  7.   

    如果两表有相同的KEY字段,用UPDATE替换,否则游标
      

  8.   

    可以建个临时表   create temporary table xxxx(a int);