where-current-of.pgc

text/plain

Filename: where-current-of.pgc
Type: text/plain
Part: 1
Message: Re: Re: ECPG dynamic cursor fix for UPDATE/DELETE ... WHERE CURRENT OF :curname
#include <stdio.h>

int main(void)
{
	EXEC SQL BEGIN DECLARE SECTION;
	char	*curname = "mycur";
	int	id, one = 1, two = 2, id1, id2;
	char	*new_t = "updated";
	char	t[64];
	EXEC SQL END DECLARE SECTION;

	EXEC SQL WHENEVER SQLERROR SQLPRINT;

	EXEC SQL CONNECT TO zozo;

	EXEC SQL DECLARE :curname CURSOR FOR SELECT id, t FROM t1;

	EXEC SQL OPEN :curname;

	while (sqlca.sqlcode == 0)
	{
		EXEC SQL FETCH FROM :curname INTO :id, :t;
		if (sqlca.sqlcode != 0)
			break;
		EXEC SQL UPDATE t1 SET t = :new_t WHERE CURRENT OF :curname RETURNING id + :one INTO :id1;

		EXEC SQL DELETE FROM t1 WHERE CURRENT OF :curname RETURNING id + :two INTO :id2;

		printf("%d %d %d '%s'\n", id, id1, id2, t);
	}

	EXEC SQL CLOSE :curname;

	EXEC SQL DISCONNECT ALL;

	return 0;
}