Sybase 12.4.2 User Manual
Page 274

Using cursors in procedures
254
-- 7. Close the cursor
CLOSE ThisCompany;
END
Notes
The
TopCustomerValue
procedure has the following notable features:
•
The "error not found" exception is declared. This exception is used later in
the procedure to signal when a loop over the results of a query has
completed.
For more information about exceptions, see “Errors and warnings in
procedures”.
•
Two local variables
ThisName
and
ThisValue
are declared to hold the
results from each row of the query.
•
The cursor
ThisCompany
is declared. The SELECT statement produces a
list of company names and the total value of the orders placed by that
company.
•
The value of
TopValue
is set to an initial value of 0, for later use in the loop.
•
The
ThisCompany
cursor is opened.
•
The LOOP statement loops over each row of the query, placing each
company name in turn into the variables
ThisName
and
ThisValue
. If
ThisValue
is greater than the current top value,
TopCompany
and
TopValue
are reset to
ThisName
and
ThisValue
.
•
The cursor is closed at the end of the procedure.
The LOOP construct in the
TopCompanyValue
procedure is a standard form,
exiting after the last row is processed. You can rewrite this procedure in a more
compact form using a FOR loop. The FOR statement combines several aspects
of the above procedure into a single statement.
CREATE PROCEDURE TopCustomerValue2(
OUT TopCompany CHAR(36),
OUT TopValue INT )
BEGIN
-- Initialize the TopValue variable
SET TopValue = 0;
-- Do the For Loop
CompanyLoop:
FOR CompanyFor AS ThisCompany
CURSOR FOR
SELECT company_name AS ThisName ,
CAST( sum( sales_order_items.quantity *
product.unit_price ) AS INTEGER )