存储过程中的普通香草光标将无法编译

时间:2019-03-20 21:30:48

标签: mysql mysql-workbench

有一个非常普通的香草documented stored proc here(在Google上排名最高),当我尝试在Workbench中创建它时会出现语法错误:

public class MyTestClass
{
    private readonly ITestOutputHelper output;

    public MyTestClass(ITestOutputHelper output)
    {
        this.output = output;
    }

    [Fact]
    public void MyTest()
    {
        var temp = "my class!";
        output.WriteLine("This is output from {0}", temp);
    }
}

我更改的仅有两行是CREATE PROCEDURE curdemo() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE a CHAR(16); DECLARE b, c INT; DECLARE cur1 CURSOR FOR select id from product; DECLARE cur2 CURSOR FOR select name from product; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur1; OPEN cur2; read_loop: LOOP FETCH cur1 INTO a, b; FETCH cur2 INTO c; IF done THEN LEAVE read_loop; END IF; IF b < c THEN INSERT INTO test.t3 VALUES (a,b); ELSE INSERT INTO test.t3 VALUES (a,c); END IF; END LOOP; CLOSE cur1; CLOSE cur2; END; select id from product,因此它将命中数据库中实际存在的表。当我尝试创建存储的proc(甚至不运行它)时,出现此错误:

  

错误代码:1064。您的SQL语法有错误;检查   与您的MySQL服务器版本相对应的手册   在第3行的''附近使用的语法

我以前已经成功创建了MySQL存储的proc,但是从来没有创建过游标,即使从mysql网站上直接复制/粘贴,我也似乎无法使最基本的游标正常工作。

我的目标很简单:我希望能够在存储的proc中运行查询,在游标中循环遍历结果,并在循环的每个记录中获取一个值,然后对该值进行处理。例如

select name from product

我想要select id from product 类型的东西,所以我可以抓住SET @ID = id并用它来做一些事情。

我在做什么错了?

0 个答案:

没有答案