-1

2つの引数を渡しており、統計テーブルに複数の挿入呼び出しを入力する必要があります。それは機能していません、誰かがこれについて私を助けることができますか?

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);
4

1 に答える 1

1

最初の挿入ステートメントをで終了する必要があります;

MySQLがプロシージャがそこで終了したと思わないようにするには、これらの複数のステートメントをBEGIN ... ENDブロックにカプセル化し、区切り文字を変更する必要があります。

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*/
于 2013-01-31T15:47:23.513 に答える