Showing posts with label SRW Example. Show all posts
Showing posts with label SRW Example. Show all posts

Thursday, June 14, 2012

SRW Example

FUNCTION CREATETAB RETURN BOOLEAN IS
BEGIN
SRW.DO_SQL('CREATE TABLE CHECK (EMPNO NUMBER NOT NULL
            PRIMARY KEY, SAL NUMBER (10,2)) PCTFREE 5
            PCTUSED 75');
RETURN(TRUE);
EXCEPTION
WHEN SRW.DO_SQL_FAILURE THEN
 SRW.MESSAGE(100, 'ERROR WHILE CREATING CHECK TABLE.');
 SRW.MESSAGE(50, 'REPORT WAS STOPPED BEFORE THE RUNTIME
 PARAMETER FORM.');
 RAISE SRW.PROGRAM_ABORT;
END;
/* Suppose you want to create a "table of contents" by getting the
** first character of a column's value, and page number on which its
** field fires to print.  Assume that you want to put the "table of contents"
** into a table named SHIP.  You could write the following construct:
*/

DECLARE
  PAGE_NO      NUMBER;
  PAGE_FOR     INDEX NUMBER;
  SORT_CHAR    CHAR(1);
  CMD_LINE     CHAR(200);
BEGIN
  SORT_CHAR := :SORT_NAME ;
  IF :CALLED = 'Y' THEN
    SRW.GET_PAGE_NUM(PAGE_FOR_INDEX);
    SRW.USER_EXIT('RWECOP PAGE_FOR_INDEX
                   P_START_PAGENO');
    SRW.MESSAGE(2,TO_CHAR(:P_START_PAGENO));
  END IF;
  SRW.GET_PAGE_NUM(PAGE_NO);
  CMD_LINE := 'INSERT INTO SHIP VALUES
       ('''||SORT_CHAR||''','||TO_CHAR(PAGE_NO)||')';
  SRW.MESSAGE(2,CMD_LINE);
  SRW.DO_SQL(CMD_LINE);
  COMMIT;
EXCEPTION
  WHEN DUP_VAL_ON_INDEX THEN
       NULL;
  WHEN SRW.DO_SQL_FAILURE THEN
       SRW.MESSAGE(1,'FAILED TO INSERT ROW INTO SHIP
TABLE');
  WHEN OTHERS THEN
       COMMIT;
END;