home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / SqlPrint.cp < prev    next >
Text File  |  1996-05-31  |  3KB  |  80 lines

  1. /*---------------------------------------------------------------------------
  2.  *
  3.  * Copyright (c) 1995 Cadre Technologies Inc.
  4.  *
  5.  * This software is furnished under a license and may be used only in
  6.  * accordance with the terms of such license and with the inclusion of
  7.  * the above copyright notice. This software or any other copies thereof
  8.  * may not be provided or otherwise made available to any other person.
  9.  * No title to and ownership of the software is hereby transferred.
  10.  *
  11.  * The information in this software is subject to change without notice
  12.  * and should not be construed as a commitment by Cadre Technologies Inc.
  13.  *
  14.  *---------------------------------------------------------------------------
  15.  *
  16.  *    File        : @(#)SqlPrint.cp    1.1
  17.  *    Original date    : 28 November 1995
  18.  *    Description    : General error handling function
  19.  *                        taken from examples in SYBASE Open Client Embedded
  20.  *                        SQL/C Programmer's Guide
  21.  *              uses RogueWave class library
  22.  *
  23.  *---------------------------------------------------------------------------
  24.  */
  25. static const char SccsId[]="@(#)SqlPrint.cp    1.1\t06 Feb 1996 Copyright 1995 Cadre Technologies Inc.";
  26.  
  27. #ifndef SQLPRINT_HXX
  28. #include "SqlPrint.hxx"
  29. #endif
  30.  
  31. #include <stdlib.h>
  32. #include <stdio.h>
  33.  
  34. EXEC SQL WHENEVER SQLERROR CONTINUE;
  35. EXEC SQL WHENEVER SQLWARNING CONTINUE;
  36. EXEC SQL WHENEVER NOT FOUND CONTINUE;
  37.  
  38. // Code taken from "Open Client Embedded SQL/C Programmer's Guide",
  39. // Ch. 8 "Handling Errors", Sect. "Using get diagnostics".
  40. //
  41. void sqlprint()
  42. {
  43.     EXEC SQL BEGIN DECLARE SECTION;
  44.     int nrMesg;
  45.     int condCnt;
  46.     EXEC SQL INCLUDE SQLCA;
  47.     EXEC SQL END DECLARE SECTION;
  48.  
  49.     EXEC SQL GET DIAGNOSTICS :nrMesg = NUMBER;
  50.  
  51.     for (condCnt = 1; condCnt <= nrMesg; ++condCnt) {
  52.     EXEC SQL GET DIAGNOSTICS EXCEPTION :condCnt :sqlca = SQLCA_INFO;
  53.  
  54.     // ignore CS_STATUS_RESULT returned after every stored procedure call
  55.     //
  56.     if (sqlca.sqlcode == -25009)
  57.         return;
  58.  
  59.     // ignore "Command has been aborted." msg if not first msg
  60.     //
  61.     if (sqlca.sqlcode == -3621 && condCnt != 1)
  62.         return;
  63.  
  64.     if (sqlca.sqlcode < 0) {
  65.         // sqlerror
  66.         printf("SYBASE ERROR [%d] (#%d): %s\n", sqlca.sqlcode, condCnt, sqlca.sqlerrm.sqlerrmc);
  67.     } else if (sqlca.sqlcode == 100) {
  68.         // not found
  69.         printf("SYBASE MESSAGE [%d] (#%d): No rows returned from last statement.\n", sqlca.sqlcode, condCnt);
  70.     } else if (sqlca.sqlcode == 0) {
  71.         // sqlwarning
  72.         if (sqlca.sqlwarn[1] == 'W')
  73.         printf("SYBASE WARNING [%d] (#%d): %s\n", sqlca.sqlcode, condCnt, sqlca.sqlerrm.sqlerrmc);
  74.         else if (sqlca.sqlwarn[3] == 'W')
  75.         printf("SYBASE WARNING [%d] (#%d): %s\n", sqlca.sqlcode, condCnt, sqlca.sqlerrm.sqlerrmc);
  76.     }
  77.     }
  78. }
  79.  
  80.