有一个非常普通的香草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
并用它来做一些事情。
我在做什么错了?