home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 January
/
Chip_2001-01_cd1.bin
/
tema
/
interb
/
InterBase_WI-V6.0-server.exe
/
server
/
examples
/
gpre
/
stat3.e
< prev
next >
Wrap
Text File
|
2000-06-23
|
3KB
|
108 lines
/*
* Program type: Embedded Static SQL
*
* Description:
* This program declares a cursor, opens the cursor, and loops
* fetching multiple rows. All departments that need to hire
* a manager are selected and displayed.
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Interbase.com/IPL/
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Interbase Software Corporation
* and its successors. Portions created by Borland/Inprise are
* Copyright (C) 1992-1998 and 1999-2000 Borland/Inprise. Portions
* created by InterBase Software Corporation are Copyright (C)
* 1998-1999 InterBase Software Corporation.
*
* Copyright (C) 2000 InterBase Software Corporation
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#include "example.h"
#include <stdlib.h>
#include <stdio.h>
EXEC SQL
BEGIN DECLARE SECTION;
EXEC SQL
END DECLARE SECTION;
int main (void)
{
BASED_ON department.department department;
BASED_ON department.department parent_dept;
BASED_ON department.location location;
/* Trap all errors. */
EXEC SQL
WHENEVER SQLERROR GO TO Error;
/* Trap SQLCODE = -100 (end of file reached during a fetch). */
EXEC SQL
WHENEVER NOT FOUND GO TO AllDone;
/* Ignore all warnings. */
EXEC SQL
WHENEVER SQLWARNING CONTINUE;
/* Declare the cursor for selecting all departments without a manager. */
EXEC SQL
DECLARE to_be_hired CURSOR FOR
SELECT d.department, d.location, p.department
FROM department d, department p
WHERE d.mngr_no IS NULL
AND d.head_dept = p.dept_no;
/* Open the cursor. */
EXEC SQL
OPEN to_be_hired;
printf("\n%-25s %-15s %-25s\n\n",
"DEPARTMENT", "LOCATION", "HEAD DEPARTMENT");
/*
* Select and display all rows.
*/
while (SQLCODE == 0)
{
EXEC SQL
FETCH to_be_hired INTO :department, :location, :parent_dept;
/*
* If FETCH returns with -100, the processing will jump
* to AllDone before the following printf is executed.
*/
printf("%-25s %-15s %-25s\n", department, location, parent_dept);
}
/*
* Close the cursor and release all resources.
*/
AllDone:
EXEC SQL
CLOSE to_be_hired;
EXEC SQL
COMMIT RELEASE;
return 0;
/*
* Print the error, and exit.
*/
Error:
isc_print_sqlerror((short)SQLCODE, gds__status);
return 1;
}