Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL存储过程没有按预期进行插入_Mysql_Select_Stored Procedures_Insert - Fatal编程技术网

MySQL存储过程没有按预期进行插入

MySQL存储过程没有按预期进行插入,mysql,select,stored-procedures,insert,Mysql,Select,Stored Procedures,Insert,我正在传递两个参数,需要用多个插入调用填充stats表。没用了,有人能帮我吗 CREATE PROCEDURE STAT(IN arg_From DATETIME, IN arg_End DATETIME) INSERT INTO stats(source_id_fk,source_type,stat_type_id_fk, stat_count,modified_on,created_on) (SELECT -1 as source_id_fk ,3

我正在传递两个参数,需要用多个插入调用填充stats表。没用了,有人能帮我吗

CREATE PROCEDURE STAT(IN arg_From DATETIME, IN arg_End DATETIME)

INSERT INTO stats(source_id_fk,source_type,stat_type_id_fk,
                 stat_count,modified_on,created_on)   
(SELECT -1 as source_id_fk ,3 as source_type, 1 AS stat_type_id_fk ,
                 COUNT( 1 ) AS stat_count, NOW( ) AS modified_on , 
                 NOW( ) AS created_on 
FROM  wall_posts WHERE post_type =1 
and created_on >= arg_From 
and created_on <= arg_End group by 1,2,3,5,6)

INSERT INTO stats(source_id_fk,source_type,stat_type_id_fk,stat_count,
                 modified_on,created_on) 
(SELECT -1 as source_id_fk ,3 as source_type, 2 AS stat_type_id_fk , 
                 COUNT( 1 ) AS stat_count  , NOW( ) AS modified_on , 
                 NOW( ) AS created_on 
FROM  wall_posts WHERE post_type =2  
and created_on >= arg_From 
and created_on <= arg_End group by 1,2,3,5,6);

您需要以结束第一个insert语句

为了使MySQL不认为您的过程已经完成,您必须将这些多个语句封装在BEGIN中。。。结束块并更改分隔符

DELIMITER $$
CREATE PROCEDURE STAT(IN arg_From DATETIME, IN arg_eND DATETIME)
BEGIN
INSERT INTO stats(source_id_fk,source_type,stat_type_id_fk,
                 stat_count,modified_on,created_on)   
(SELECT -1 as source_id_fk ,3 as source_type, 1 AS stat_type_id_fk ,
                 COUNT( 1 ) AS stat_count, NOW( ) AS modified_on , 
                 NOW( ) AS created_on 
FROM  wall_posts WHERE post_type =1 
and created_on >= arg_From 
and created_on <= arg_End group by 1,2,3,5,6);

INSERT INTO stats(source_id_fk,source_type,stat_type_id_fk,stat_count,
                 modified_on,created_on) 
(SELECT -1 as source_id_fk ,3 as source_type, 2 AS stat_type_id_fk , 
                 COUNT( 1 ) AS stat_count  , NOW( ) AS modified_on , 
                 NOW( ) AS created_on 
FROM  wall_posts WHERE post_type =2  
and created_on >= arg_From 
and created_on <= arg_End group by 1,2,3,5,6);
END $$
DELIMITER ; /*and change it back to the normal `;` again*/

您是否看到arg_eND在定义中是这样的,但插入时是arg_eND?这是在我复制到StackOverFlow时发生的。如果可以,在发布涉及代码的问题时,值得花点时间使其尽可能可读。有人已经为您重新设置了格式,但在可能的情况下可以减少这种工作。您能解释一下在这种情况下不工作意味着什么吗?你在期待什么?到底发生了什么?我认为这里没有足够的内容。当我试图在phpmyadmin中保存此过程时,它无法保存它。但如果我只保留一条insert语句,它就会执行。