存储过程的delete语句出错。各位帮忙,该如何解决

存储过程的delete语句出错。各位帮忙

SQL code


  
DELIMITER //
CREATE PROCEDURE sp_crm_insertdata (flag INTEGER(1))
BEGIN
    DECLARE customer_name VARCHAR(255); 
    DECLARE i INTEGER(11) DEFAULT 10;
    DECLARE j INTEGER(11) DEFAULT 1000;
    IF (flag > 0) THEN
        BEGIN
            WHILE i < j DO
                SET customer_name = CONCAT('customer', i);
                INSERT INTO CUSTOMER(
                            CUSTOMER_NAME, MANAGE_USER, CUSTOMER_TYPE, SCALE, PURVIEW, 
                            CREATEOR, BIRTHDAY_REMIND_SMS, BIRTHDAY_REMIND
                        )
                VALUES( customer_name, 'admin', '1', '0', '1', 'admin', '1', '1' );
                
                SET i = (i + 1);
            END WHILE;
        END;
    ELSE
        BEGIN
            #select i,j;
            WHILE i < j DO
                SET customer_name = CONCAT('customer', j);
                SELECT customer_name;
                DELETE FROM CUSTOMER WHERE CUSTOMER_NAME = customer_name;
                
                SET j = (j - 1);
            END WHILE;
        END;
        
    END IF;
END;

执行

CALL sp_crm_insertdata(0);的时候。

表就被清空了,删除了我不想要的数据

好像while循环只走了一次

INSERT INTO CUSTOMER(CUSTOMER_NAME, MANAGE_USER, CUSTOMER_TYPE, SCALE, PURVIEW,CREATEOR, BIRTHDAY_REMIND_SMS, BIRTHDAY_REMIND)

VALUES( ‘haha’, ‘admin’, ‘1’, ‘0’, ‘1’, ‘admin’, ‘1’, ‘1’ );

CUSTOMER_NAME = haha都被删除掉了




你测试下

 SET customer_name = CONCAT(‘customer’, j);

 SELECT customer_name;

看看结果是什么



只有分步调试,看看问题出在什么地方




建议提供测试数据,这样别人可以直接在自己的机器上再现你的问题进行分析调试。

建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。

参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

 

1. 你的 create table xxx .. 语句

2. 你的 insert into xxx … 语句

3. 结果是什么样,(并给以简单的算法描述)

4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

 

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。




如果模拟你的问题?

我已经执行了你的 

1. CREATE TABLE `customer` ( ..

2. CREATE PROCEDURE sp_crm_insertdata (flag INTEGER(1)) …

3. CALL sp_crm_insertdata(1); 

4. CALL sp_crm_insertdata(0);

SQL code


mysql> select count(*) from CUSTOMER;

.....
..
+---------------+
| customer12    |
+---------------+
1 row in set (0.86 sec)

+---------------+
| customer_name |
+---------------+
| customer11    |
+---------------+
1 row in set (0.88 sec)

Query OK, 0 rows affected (0.88 sec)

mysql> select count(*) from CUSTOMER;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql>


                        
  
  
                    
存储过程的delete语句出错。各位帮忙,该如何解决

相关文章:

你感兴趣的文章:

标签云: