0

我写了一个ecpg代码。我正在尝试根据元组是否已存在于表中将元组插入表中。我在编译时收到“错误:break statement not within loop or switch”请帮助我在代码中注释了编译器显示错误的行

EXEC SQL DECLARE cursor4 CURSOR FOR
select count(*)
from works_on
where pno = :project
and essn = :ssn;

EXEC SQL OPEN cursor4;
EXEC SQL WHENEVER NOT FOUND DO BREAK;

while (SQLCODE==0)
{
EXEC SQL FETCH IN cursor4 INTO :cnt; 
}

EXEC SQL CLOSE cursor4;
EXEC SQL BEGIN DECLARE SECTION;
const char *qry = "INSERT INTO WORKS_ON VALUES(?,?,?);";
EXEC SQL END DECLARE SECTION;

if (cnt == 0 )
{
EXEC SQL PREPARE mystmt from :qry;
exec sql execute mystmt using '123456789',3,5.0; // where i am getting error

}
4

1 回答 1

0

执行 WHENEVER 语句,直到它在代码中找到另一个 WHENEVER。您必须在您的 bucle 之后取消WHENVER NOT FOUND 休息时间。

EXEC SQL DECLARE cursor4 CURSOR FOR
select count(*)
from works_on
where pno = :project
and essn = :ssn;

EXEC SQL OPEN cursor4;
EXEC SQL WHENEVER NOT FOUND DO BREAK;

while (SQLCODE==0)
{
EXEC SQL FETCH IN cursor4 INTO :cnt; 
}
EXEC SQL WHENEVER NOT FOUND CONTINUE;   //Add this line to your code.

EXEC SQL CLOSE cursor4;
EXEC SQL BEGIN DECLARE SECTION;
const char *qry = "INSERT INTO WORKS_ON VALUES(?,?,?);";
EXEC SQL END DECLARE SECTION;

if (cnt == 0 )
{
EXEC SQL PREPARE mystmt from :qry;
exec sql execute mystmt using '123456789',3,5.0; 
于 2014-05-13T19:10:37.793 回答