mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-16 08:15:53 +01:00
105 lines
2.4 KiB
Plaintext
105 lines
2.4 KiB
Plaintext
/*
|
|
* 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.Inprise.com/IPL.html
|
|
*
|
|
* 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 Inprise Corporation
|
|
* and its predecessors. Portions created by Inprise Corporation are
|
|
* Copyright (C) Inprise 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;
|
|
}
|
|
|