ストアド プロシージャは、渡された各パラメーターを宣言する必要があります。さらに、宣言部分で宣言されている DATA TYPE は、使用されているデータ ソースに対して有効であり、ストアド プロシージャを呼び出す際には互換性のあるホスト変数のデータ型を使用する必要があります。詳細については、「SQL データ型」を参照してください。
次に例を示します。
CREATE PROCEDURE GETPRML (IN PROCNM CHAR(18) ,IN SCHEMA CHAR (8) ,INOUT OUTCODE INTEGER ,INOUT PARMLIST CHAR (26) ) LANGUAGE COBOL DETERMINISTIC READS SQL DATA NO DBINFO FENCED NOT THREADSAFE EXTERNAL NAME "GETPRML!GETPRML" PARAMETER STYLE GENERAL PROGRAM TYPE SUB RESULT SETS 0;
次に示すように、ストアド プロシージャ GETPRML を定義して、CREATE PROCEDURE 文での定義と一致するようにします。
GETPRML:
  PROC(PROCNM, SCHEMA, OUTCODE, PARMLST)
  external('GETPRML');
  DECLARE PROCNM CHAR(18),               /* INPUT parm -- PROCEDURE name */
          SCHEMA CHAR(8),                /* INPUT parm -- User's SCHEMA  */ 
          OUTCODE FIXED BIN(31) native, /* INOUT -- SQLCODE from        */                                
          PARMLST CHAR(26);              /* INOUT -- CURRENT TIMESTAMP   */
    
  EXEC SQL INCLUDE SQLCA;
  DECLARE TIMESTAMP CHAR(26);
  /************************************************************/
  /* Execute SELECT from SYSIBM.SYSDUMMY1 if TEST passed      */
  /************************************************************/
  if PROCNM = ‘TEST’ then
    do;
      exec sql
        SELECT CURRENT TIMESTAMP INTO :TIMESTAMP
          FROM SYSIBM.SYSDUMMY1;
    end;
  else
    do;
      TIMESTAMP = ‘PASS’;
      SQLCODE = -12;
    end;
      
  PARMLST = TIMESTAMP; 
  OUT_CODE = SQLCODE;         /* return SQLCODE to caller */
  RETURN;
END GETPRML;