Example 10-7: Procedure to return HTML page of stock quotes

CREATE PROCEDURE QuotesForStocksInPortfolio( id NUMBER ) IS
  -- Select all stocks for the user with id passed in
  CURSOR c_QuotesForUserid( cp_Userid NUMBER )
      IS SELECT q.symbol, q.price, q.change
           FROM quotes q, portfolio_stocks ps
          WHERE q.symbol = ps.symbol
            AND ps.owner = cp_Userid;
BEGIN
  HTP.P('<HTML><BODY><TABLE>');
      HTP.P('<TR>');
        HTP.P('<TH>Symbol</TH>');
        HTP.P('<TH>Price</TH>');
        HTP.P('<TH>Change</TH>');
        HTP.P('</TR>');
      FOR curQuote IN c_QuotesForUserid( id )
      LOOP
      HTP.P('<TR>');
        HTP.P('<TD>' || curQuote.symbol || '</TD>');
        HTP.P('<TD>' || curQuote.price  || '</TD>');
        HTP.P('<TD>' || curQuote.change || '</TD>');
        HTP.P('</TR>');
      END LOOP;
      HTP.P('</TABLE></BODY></HTML>');
END QuotesForStocksInPortfolio;