就当前这个存储过程,执行创建没问题了,当是执行存过过程却并没有插入数据,不知道哪里有问题,也没有报错,插入语句,试过了,没有问题 INSERT INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`, `sleepTimes`,`lightSleepTimes`,`heavySleepTimes`, `wakeupNum`,`updateTime`,`createTime`) VALUES (0,0,100, 1001,0,0,0,0,NOW(),NOW());
INSERT INTO `userRecordDetail` 加引号干嘛, 你print 下看看插入语句对不
mysql 创建表后,加了几条数据,查看sql语句就是这样的啊,这个语句没有问题,我执行过了
你存储过程 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试试看看。
执行CALL userRecord_create(1001,500,1); 后,如下:
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); 打印出你的语句看是否走到这里的,怀疑没有跑到插入。 你调试调试 就出来
加了一句: SELECT NOW();执行完成后,还是显示
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;
恩,我改成 SELECT id INTO @id 就可以了,不过,按道理 SELECT @id =id 应该也是可以的啊
就当前这个存储过程,执行创建没问题了,当是执行存过过程却并没有插入数据,不知道哪里有问题,也没有报错,插入语句,试过了,没有问题
INSERT INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`,
`sleepTimes`,`lightSleepTimes`,`heavySleepTimes`,
`wakeupNum`,`updateTime`,`createTime`)
VALUES (0,0,100, 1001,0,0,0,0,NOW(),NOW());
加引号干嘛, 你print 下看看插入语句对不
mysql 创建表后,加了几条数据,查看sql语句就是这样的啊,这个语句没有问题,我执行过了
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试试看看。
执行CALL userRecord_create(1001,500,1); 后,如下:
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);
打印出你的语句看是否走到这里的,怀疑没有跑到插入。
你调试调试 就出来
加了一句: SELECT NOW();执行完成后,还是显示
// 你这里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;
恩,我改成 SELECT id INTO @id 就可以了,不过,按道理 SELECT @id =id 应该也是可以的啊