我已经做了很多谷歌搜索,并阅读了很多不同的堆栈交换帖子。我试图在存储过程中进行一些日志记录。
我看过但却没有取得圆满成功:
我发现通过使用[mysqldump]
部分更改my.cnf,我可以使用INTO OUTFILE
命令将文件写入文件一次。当我尝试再次运行它时,它会抱怨,因为该文件已经存在。我也尝试了TEE命令,但得到了一条不受支持的声明'当我试图运行它。看起来这个命令是在MySQL 4.x中引入的,我使用MySQL 5.x。
我的最终目标是能够通过记录信息(如果找到某些条件)写入文件,该文件可以像跟踪文件一样使用。只要我能做到,我真的不在乎它是如何完成的。关于如何实现这一点的任何想法,或者我对TEE命令做错了什么?
答案 0 :(得分:0)
您可以创建一个临时表,在每个阶段中输入所需的数据,然后在删除之前选择所有内容。像这样的东西:
DROP PROCEDURE IF EXISTS MY_PROC;
DELIMITER ;;
CREATE PROCEDURE MY_PROC()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE l_user_id INT DEFAULT 0;
SELECT COUNT(*) FROM users INTO n;
SET i=0;
CREATE temporary TABLE if not exists tmplog (i_value varchar(20), user_id varchar(20)) engine = memory;
WHILE i<n DO
SELECT user_id INTO l_user_id FROM users LIMIT i,1;
INSERT INTO tmplog VALUES(i, l_user_id );
SET i = i + 1;
END WHILE;
SELECT * FROM tmplog;
DROP TABLE tmplog;
End;
;;
DELIMITER ;
CALL MY_PROC();