No, you can put any value into the variables and every time you use the FETCH statement it will be changed to the database field value, ie:
int i;
i = 10; /* i value is 10 */
cursor declaration...
cursor open...
for (;

{
if (SQLCODE)
break;
fetch cursor into :i; /* it changes i to the field dabase value */
printf("%d", i); /* print the value of the database field */
i = 11; /* now i = 11 */
printf("%d", i); /* print 11 */
}
close cursor...
free cursor...
I hope this help you.