Rational Developer for System z

Código fuente PL/I

Código fuente PL/I para el procedimiento almacenado de ejemplo.

Finalidad

Utilice este código para el procedimiento almacenado PL/I de ejemplo.
/*
 * Procedimiento almacenado PLI SAMPLE.PLISAMP
 * @param Action
 * @param City
 * @param Country
 * @param Response
 */

PLISAMP : Procedure ( Action   ,
                       City     ,
                       Country  ,
                       Response ) options (main);

 dcl Action   CHAR  (8) VAR;
 dcl City     CHAR (32) VAR;
 dcl Country  CHAR (32) VAR;
 dcl Response CHAR (80) VAR;

 dcl Sqlcode_Pic PIC'SSS999';

 EXEC SQL INCLUDE SQLCA;

 Action=TRANSLATE(Action,'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                         'abcdefghijklmnopqrstuvwxyz');

 select (Action);
   when ('S','SELECT') do;
     Select;
       When (City='' & Country='') do;
         EXEC SQL
           DECLARE C1 CURSOR WITH RETURN WITH HOLD FOR
             SELECT * FROM SAMPLE.CITYTABLE
         ;
         EXEC SQL
           OPEN C1
         ;
       end;
       When (City='') do;
         EXEC SQL
           DECLARE C2 CURSOR WITH RETURN WITH HOLD FOR
             SELECT * FROM SAMPLE.CITYTABLE
               WHERE COUNTRY=:COUNTRY
         ;
         EXEC SQL
           OPEN C2
         ;
       end;
       When (Country='') do;
         EXEC SQL
           DECLARE C3 CURSOR WITH RETURN WITH HOLD FOR
             SELECT * FROM SAMPLE.CITYTABLE
               WHERE CITY=:CITY
         ;
         EXEC SQL
           OPEN C3
         ;
       end;
       Otherwise do;
         EXEC SQL
           DECLARE C4 CURSOR WITH RETURN WITH HOLD FOR
             SELECT * FROM SAMPLE.CITYTABLE
               WHERE CITY=:CITY AND COUNTRY=:COUNTRY
         ;
         EXEC SQL
           OPEN C4
         ;
       end;
     end;
     if Sqlcode=0 then Response='Select successful';
     else do;
       Sqlcode_Pic = Sqlcode;
       Response='Select unsuccessful: Sqlcode '||Sqlcode_Pic;
     end;
   end;
   when ('I','INSERT') do;
     Select;
       When (City='' & Country='')
         Response='Insertar no satisfactorio: Ciudad y País no especificados';
       When (City='')
         Response='Insertar no satisfactorio: Ciudad no especificada';
       When (Country='')
         Response='Insertar no satisfactorio: País no especificado';
       Otherwise do;
         EXEC SQL
           INSERT INTO SAMPLE.CITYTABLE
             (CITY, COUNTRY) VALUES (:CITY, :COUNTRY)
         ;
         if Sqlcode=0 then Response='Insertar satisfactorio';
         else do;
           Sqlcode_Pic = Sqlcode;
           Response='Insertar no satisfactorio: Sqlcode '||Sqlcode_Pic;
         end;
       end;
     end;
   end;
   when ('D','DELETE') do;
     Select;
       When (City='' & Country='')
         Response='Suprimir no satisfactorio: Ciudad y País no especificados';
       When (City='')
         Response='Suprimir no satisfactorio: Ciudad no especificada';
       When (Country='')
         Response='Suprimir no satisfactorio: País no especificado';
       Otherwise do;
         EXEC SQL
           DELETE FROM SAMPLE.CITYTABLE
             WHERE CITY=:CITY AND COUNTRY=:COUNTRY
         ;
         if Sqlcode=0 then Response='Suprimir satisfactorio';
         else do;
           Sqlcode_Pic = Sqlcode;
           Response='Suprimir no satisfactorio: Sqlcode '||Sqlcode_Pic;
         end;
       end;
     end;
   end;
   otherwise Response='Acción "'||Action||'" no soportada';
 end;

 END PLISAMP;
 

Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)