Diferencias entre las rutinas Java y otras rutinas

Las rutinas de Java se diferencian en algunos aspectos básicos de las rutinas escritas en otros lenguajes de programación.

Una rutina Java difiere de los procedimientos almacenados que están escritos en otros lenguajes de las siguientes maneras:
  • Se debe definir una rutina Java con PARAMETER STYLE JAVA. PARAMETER STYLE JAVA especifica que la rutina utiliza una convención de paso de parámetros que se ajusta al lenguaje Java y a las especificaciones SQLJ. DB2 pasa los parámetros INOUT y OUT como matrices de una sola entrada. Esto significa que en su rutina Java, debe declarar los parámetros OUT o INOUT como matrices. Por ejemplo, suponga que el procedimiento almacenado sp_one_out tiene un único parámetro de salida de tipo int. Declara el parámetro de este modo:
    public static void routine_one_out (int[] out_parm)
  • Las rutinas de Java que son métodos principales de Java tienen estas restricciones:
    • El método debe tener una firma de String[]. Debe ser posible asignar todos los parámetros a variables Java de tipo java.lang.String.
    • La rutina puede tener solamente parámetros IN.
  • No se pueden realizar llamadas de interfaz de instalación de instrumentación (IFI) en rutinas Java.
  • No puede especificar un nivel de acceso SQL de NO SQL para las rutinas Java.
  • Al igual que en otros programas Java, no puede incluir las siguientes instrucciones en una rutina Java:
    • CONNECT
    • RELEASE
    • SET CONNECTION
  • Los parámetros de las rutinas tienen correlaciones con los tipos de datos del lenguaje principal que son diferentes de las correlaciones de los parámetros de las rutinas con los parámetros del lenguaje principal en otros lenguajes.
  • La técnica para devolver conjuntos de resultados de procedimientos almacenados de Java es diferente de la técnica para devolver conjuntos de resultados en otros procedimientos almacenados.
  • Cuando se ejecuta una rutina Java, Java carga dinámicamente clases cuando aparecen nuevas referencias de clase en la clase que se está ejecutando. Durante el proceso de carga de las clases, puede que se emita una excepción java.lang.ClassNotFoundException o un error java.lang.NoClassDefFoundError. Estos errores pueden producirse tanto si Java busca la clase en un JAR instalado como en el CLASSPATH. Si la rutina Java no detecta estos errores y excepciones, la rutina finaliza y se informa de una condición de error SQL.