错误消息156,级别15,状态1,关键字'CONTINUE'附近的语法不正确

艾伦·科达(Allan Corda)

我需要一些帮助来制作此MySQL游标,我一直在遵循此指南:http : //www.mysqltutorial.org/mysql-cursor/我正在尝试使一个游标遍历一个表并一次创建一个名称列表。

CREATE PROCEDURE build_people_table ( @people varchar(4000))
AS
BEGIN
DECLARE @v_finished INT;
    DECLARE @v_name nvarchar(255);


    --Main Cursor
    DECLARE people_cursor CURSOR FOR
    SELECT [Person Name]
    FROM [dbo].[People];

     -- declare NOT FOUND handler
 DECLARE CONTINUE HANDLER 
        FOR NOT FOUND SET @v_finished = 1;


    OPEN people_cursor;

    get_name: LOOP

    FETCH people_cursor INTO @v_name ;

    IF @v_finished = 1 THEN
    LEAVE get_name;
    END IF;

    SET @people = CONCAT(@v_name,';',@people);
    END LOOP get_name;

    CLOSE people_cursor;

END

mySQL错误消息

Msg 156, Level 15, State 1, Procedure build_people_table, Line 41
Incorrect syntax near the keyword 'CONTINUE'.
Msg 136, Level 15, State 1, Procedure build_people_table, Line 41
Cannot use a CONTINUE statement outside the scope of a WHILE statement.
Msg 102, Level 15, State 1, Procedure build_people_table, Line 47
Incorrect syntax near 'LOOP'.
Msg 156, Level 15, State 1, Procedure build_people_table, Line 56
Incorrect syntax near the keyword 'THEN'.
Msg 102, Level 15, State 1, Procedure build_people_table, Line 61
Incorrect syntax near 'LOOP'.
Msg 156, Level 15, State 1, Procedure build_people_table, Line 74
Incorrect syntax near the keyword 'END'.
德鲁

这表明它在Mysql(您所说的使用的技术)中是端到端的。

注意,最好用

select group_concat(`Person Name`) from People;

为了这。但是无论出于何种原因,您似乎都想为此编写存储的proc,也许出于学习目的。重要的是要注意,游标非常慢。

另请注意,您的输出缓冲区(out参数)很有可能溢出。有很多数据可以进入那里。所以我将其从varchar(4000)更改为TEXT。

架构图

create table People
(   id int auto_increment primary key,
    `Person Name` varchar(200)
); 

insert People(`Person Name`) values ('John Henry'),('Kim Billings'),('Gertrude Smith');

存储过程

drop procedure if exists build_people_table;
DELIMITER $$
CREATE PROCEDURE build_people_table ( OUT people_out TEXT)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE v_name nvarchar(255);
    -- DECLARE bFirst boolean DEFAULT TRUE;


    -- Main Cursor
    DECLARE people_cursor CURSOR FOR
    SELECT `Person Name`
    FROM `People`;

    -- declare NOT FOUND handler
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;


    OPEN people_cursor;
    set @people='';

    get_name: LOOP

        FETCH people_cursor INTO v_name;

        IF done THEN
            LEAVE get_name;
        END IF;
        SET @people:= CONCAT(v_name,";",@people);
        -- SET @people:= CONCAT(@people,";",v_name);
    END LOOP get_name;

    CLOSE people_cursor;
    set people_out:=@people;
    -- select @people; -- used for debugging
END
$$
DELIMITER ;

测试

set @saveHere:='';
call build_people_table(@saveHere);
select @saveHere; -- show results

'Gertrude Smith;Kim Billings;John Henry;'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

消息156,级别15,状态1,第2行关键字“ ORDER”附近的语法不正确

来自分类Dev

错误消息 - 关键字“OR”附近的语法不正确

来自分类Dev

'real'附近的语法不正确。关键字“ where”附近的语法不正确

来自分类Dev

显示关键字“ as”错误附近的语法不正确

来自分类Dev

错误:关键字“ group”附近的语法不正确

来自分类Dev

出现错误“关键字'as'附近的语法不正确”

来自分类Dev

消息102,级别15,状态1,第2行','附近的语法不正确错误

来自分类Dev

收到错误“','附近的语法不正确”

来自分类Dev

关键字'from'附近的语法不正确(NOT IN)

来自分类Dev

关键字“ case”附近的语法不正确

来自分类Dev

关键字WHERE附近的语法不正确

来自分类Dev

关键字“ ORDER”附近的语法不正确

来自分类Dev

关键字“ DEFAULT”附近的语法不正确

来自分类Dev

关键字“ right”附近的语法不正确

来自分类Dev

关键字“ ON”附近的语法不正确

来自分类Dev

关键字“ set”附近的语法不正确

来自分类Dev

关键字“ DEFAULT”附近的语法不正确

来自分类Dev

关键字“ end”附近的语法不正确

来自分类Dev

关键字“ INTO”附近的语法不正确

来自分类Dev

关键字“ join”附近的语法不正确

来自分类Dev

关键字SELECT附近的语法不正确

来自分类Dev

关键字“ into”附近的语法不正确

来自分类Dev

关键字附近的语法不正确 if

来自分类Dev

'关键字'case'附近的语法不正确

来自分类Dev

关键字 'IF' 附近的语法不正确,IF 跟在 WITH 之后

来自分类Dev

关键字“AS”附近的语法不正确,需要 ID

来自分类Dev

我不断收到错误消息“关键字“ VALUES”附近的语法不正确”。

来自分类Dev

消息102,级别15,状态1,第3行'+'附近的语法不正确。5

来自分类Dev

消息102,级别15,状态1,第9行在“-”附近的语法不正确

Related 相关文章

  1. 1

    消息156,级别15,状态1,第2行关键字“ ORDER”附近的语法不正确

  2. 2

    错误消息 - 关键字“OR”附近的语法不正确

  3. 3

    'real'附近的语法不正确。关键字“ where”附近的语法不正确

  4. 4

    显示关键字“ as”错误附近的语法不正确

  5. 5

    错误:关键字“ group”附近的语法不正确

  6. 6

    出现错误“关键字'as'附近的语法不正确”

  7. 7

    消息102,级别15,状态1,第2行','附近的语法不正确错误

  8. 8

    收到错误“','附近的语法不正确”

  9. 9

    关键字'from'附近的语法不正确(NOT IN)

  10. 10

    关键字“ case”附近的语法不正确

  11. 11

    关键字WHERE附近的语法不正确

  12. 12

    关键字“ ORDER”附近的语法不正确

  13. 13

    关键字“ DEFAULT”附近的语法不正确

  14. 14

    关键字“ right”附近的语法不正确

  15. 15

    关键字“ ON”附近的语法不正确

  16. 16

    关键字“ set”附近的语法不正确

  17. 17

    关键字“ DEFAULT”附近的语法不正确

  18. 18

    关键字“ end”附近的语法不正确

  19. 19

    关键字“ INTO”附近的语法不正确

  20. 20

    关键字“ join”附近的语法不正确

  21. 21

    关键字SELECT附近的语法不正确

  22. 22

    关键字“ into”附近的语法不正确

  23. 23

    关键字附近的语法不正确 if

  24. 24

    '关键字'case'附近的语法不正确

  25. 25

    关键字 'IF' 附近的语法不正确,IF 跟在 WITH 之后

  26. 26

    关键字“AS”附近的语法不正确,需要 ID

  27. 27

    我不断收到错误消息“关键字“ VALUES”附近的语法不正确”。

  28. 28

    消息102,级别15,状态1,第3行'+'附近的语法不正确。5

  29. 29

    消息102,级别15,状态1,第9行在“-”附近的语法不正确

热门标签

归档