解决方案 »

  1.   


    就当前这个存储过程,执行创建没问题了,当是执行存过过程却并没有插入数据,不知道哪里有问题,也没有报错,插入语句,试过了,没有问题
       INSERT  INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`,
            `sleepTimes`,`lightSleepTimes`,`heavySleepTimes`,
            `wakeupNum`,`updateTime`,`createTime`)
            VALUES (0,0,100, 1001,0,0,0,0,NOW(),NOW());
      

  2.   

    INSERT  INTO `userRecordDetail`
    加引号干嘛, 你print 下看看插入语句对不
      

  3.   


    mysql 创建表后,加了几条数据,查看sql语句就是这样的啊,这个语句没有问题,我执行过了
      

  4.   

    你存储过程
    IF @id <= 0 THEN
            CASE recordType
            WHEN 1 THEN 
            INSERT  INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`,
            `sleepTimes`,`lightSleepTimes`,`heavySleepTimes`,
            `wakeupNum`,`updateTime`,`createTime`)
            VALUES (0,0,@counts, @userId,0,0,0,0,NOW(),NOW());
            WHEN 2 THEN   
            SELECT * FROM test;
            WHEN 3 THEN   
            SELECT * FROM test;
            END CASE;  
    这个执行到了?你print 下你 语句,然后拷贝出来insert试试看看。
      

  5.   


    执行CALL userRecord_create(1001,500,1);  后,如下:
      

  6.   

      WHEN 1 THEN 
            INSERT  INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`,
            `sleepTimes`,`lightSleepTimes`,`heavySleepTimes`,
            `wakeupNum`,`updateTime`,`createTime`)
            VALUES (0,0,@counts, @userId,0,0,0,0,NOW(),NOW());
    后加
     dbms_output.put_line(xxxxxxx); 
    打印出你的语句看是否走到这里的,怀疑没有跑到插入。
    你调试调试 就出来
      

  7.   


    加了一句: SELECT NOW();执行完成后,还是显示
      

  8.   

     SELECT @id = id FROM userRecordDetail WHERE userId = @userId AND DATE(createTime) = CURDATE();
    // 你这里id 值没有检索出来 所以没执行IF
    然后 执行update
    不过你的id 没有数据
    所以UPDATE userRecordDetail SET stepNum = stepNum + @counts WHERE id = @id; 这个更新也没有更新成功。
        IF @id <= 0 THEN
            CASE recordType
            WHEN 1 THEN 
            INSERT  INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`,
            `sleepTimes`,`lightSleepTimes`,`heavySleepTimes`,
            `wakeupNum`,`updateTime`,`createTime`)
            VALUES (0,0,@counts, @userId,0,0,0,0,NOW(),NOW());
            WHEN 2 THEN   
            SELECT * FROM test;
            WHEN 3 THEN   
            SELECT * FROM test;
            END CASE;  
        ELSE
         IF recordType = 1 THEN
            UPDATE userRecordDetail SET stepNum = stepNum + @counts WHERE id = @id;
         END IF;
      

  9.   


    恩,我改成  SELECT id INTO @id  就可以了,不过,按道理   SELECT  @id  =id  应该也是可以的啊
      

  10.   

    你查查oracle  存储过程 变量赋值语法。