Я занимаюсь изучением встроенного SQL на C. Первые пять запросов работают нормально, но теперь я застрял. Я не получаю никакого вывода об этом, хотя он структурирован точно так же, как и предыдущие запросы. Я, наверное, просто скучаю по чему-то глупому. Мысли
[ed] Ниже приведена таблица, которая ДОЛЖНА быть получена в результате запроса. В нем есть нулевые значения, и я получаю ошибку SQL -305 Необходим нулевой индикатор.
FIRST_NAME MIDDLE_NAME LAST_NAME BRANCH_NO
---------- ----------- -------------------- ---------
III - AAAAA 1000
KKK - BBB 1000
MMM - CC 3000
K PP DDD 3000
IIIII SSS DDDDD 3000
JJJ QQ EEE 3000
JJJ PP GGG 1000
K - GGG 1000
MEI - JIANG 3000
JASPER CHIACHUN WENG 1000
10 record(s) selected.
[/ Под ред]
void query6()
{
// SQL Query Definition
EXEC SQL
DECLARE c6 CURSOR FOR
SELECT s.first_name, s.middle_name, s.last_name, b.branch_no
FROM staff AS s, branch AS b
WHERE s.allocated_to = b.branch_no AND
s.allocated_to IN (SELECT branch_no
FROM branch
WHERE city = 'HAMILTON')
ORDER BY s.last_name, s.first_name, s.middle_name;
// Pretty Output
printf("\n%-15s %-15s %-15s %-15s\n",
"FIRST_NAME","MIDDLE_NAME","LAST_NAME","BRANCH_NO");
printf("%-15s %-15s %-15s %-15s\n",
"----------","-----------","---------","---------");
// Fetch SQL Result and Print
EXEC SQL OPEN c6;
while(1)
{
printf("fetch\n");
EXEC SQL FETCH c6 INTO :sqlBuffer1,
:sqlBuffer2,
:sqlBuffer3,
:sqlBuffer4;
depad(sqlBuffer1);
depad(sqlBuffer2);
depad(sqlBuffer3);
depad(sqlBuffer4);
if (SQLCODE!=0) break;
printf("%-15s %-15s %-15s %-15s\n",
sqlBuffer1,sqlBuffer2,sqlBuffer3,sqlBuffer4);
}
EXEC SQL CLOSE c6;
printf("\n");
return;
}