Procedimiento almacenado ADMIN_COMMAND_DSN

El procedimiento almacenado SYSPROC.ADMIN_COMMAND_DSN ejecuta un Inicio del cambioENLACE, REENLACE, LIBERACIÓN o DCLGENfin del cambio Subcomando DSN y devuelve la salida de la ejecución del subcomando DSN.

Entorno

Iniciar información de la interfaz de programación de uso general.

ADMIN_COMMAND_DSN se ejecuta en un espacio de direcciones de procedimientos almacenados establecido por WLM. TCB=1 también es necesario.

Autorización

Para ejecutar la instrucción CALL, el propietario del paquete o plan que contiene la instrucción CALL debe tener uno o más de los siguientes privilegios:

  • El privilegio EXECUTE en el procedimiento almacenado ADMIN_COMMAND_DSN
  • Propiedad del procedimiento almacenado
  • Autorización SYSADM

Para ejecutar el subcomando DSN, debe utilizar un conjunto de privilegios que incluya la autorización para ejecutar el subcomando DSN.

Sintaxis

El siguiente diagrama de sintaxis muestra la sentencia CALL de SQL para invocar este procedimiento almacenado:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCALLSYSPROC.ADMIN_COMMAND_DSN(Subcomando DSN,mensaje)

Descripciones de opciones

Subcomando DSN
Especifica el subcomando DSN que se va a ejecutar. Si el subcomando DSN pasado al procedimiento almacenado no es un Inicio del cambioBIND, REBIND, FREE o DCLGENfin del cambio, se devuelve un mensaje de error. El subcomando DSN se ejecuta utilizando el ID de autorización del usuario que invocó el procedimiento almacenado.

ADMIN_COMMAND_DSN no admite nombres de tres partes si se especifica un carácter comodín en el nombre del paquete.

Este parámetro es sensible a las mayúsculas y minúsculas. Debe especificar el subcomando DSN en mayúsculas.

Este es un parámetro de entrada de tipo VARCHAR(32704) y no puede ser nulo.

Mensaje
Contiene mensajes si se produce un error durante la ejecución del procedimiento almacenado.

El procedimiento almacenado podría no devolver un conjunto de resultados si el mensaje no está en blanco. Incluso si el mensaje no está en blanco, el procedimiento almacenado podría devolver un conjunto de resultados si el error descrito en el mensaje se produjo después de que el procedimiento almacenado ejecutara al menos un subcomando DSN, y el procedimiento almacenado puede insertar correctamente el mensaje de salida del subcomando DSN en el conjunto de resultados y abrir el cursor del conjunto de resultados.

Un mensaje en blanco no significa que el subcomando DSN se haya completado correctamente. La aplicación de llamada debe leer el conjunto de resultados para determinar si el subcomando DSN se ha realizado correctamente o no.

Este es un parámetro de salida de tipo VARCHAR(1331).

Ejemplo

El siguiente ejemplo en lenguaje C muestra cómo invocar ADMIN_COMMAND_DSN:

 #include    <stdio.h>
 #include    <stdlib.h>
 #include    <string.h>

/******************** DB2 SQL Communication Area ********************/
 EXEC SQL INCLUDE SQLCA;

 int main( int argc, char *argv[] )    /* Argument count and list    */
 {
   /****************** DB2 Host Variables ****************************/
   EXEC SQL BEGIN DECLARE SECTION;

   /* SYSPROC.ADMIN_COMMAND_DSN parameters                           */
   
   char        subcmd[32705];          /* BIND, REBIND, FREE, or     */
                                       /* DCLGEN DSN subcommand      */
   char        errmsg[1332];           /* Error message              */

   /* Result set locators                                            */
   volatile SQL TYPE IS RESULT_SET_LOCATOR *rs_loc1;

   /* Result set row                                                 */
   long int    rownum;                 /* Sequence number of the     */
                                       /* table row                  */
   char        text[256];              /* DSN subcommand output row  */
   EXEC SQL END DECLARE SECTION;

   /******************************************************************/
   /* Set input parameter to execute a REBIND PLAN DSN subcommand    */
   /******************************************************************/
   strcpy(subcmd, "REBIND PLAN (DSNACCOB) FLAG(W)");

   /******************************************************************/
   /* Call stored procedure SYSPROC.ADMIN_COMMAND_DSN                */
   /******************************************************************/
   EXEC SQL CALL SYSPROC.ADMIN_COMMAND_DSN (:subcmd, :errmsg);

   /******************************************************************/
   /* Retrieve result set when the SQLCODE from the call is +446,    */
   /* which indicates that result sets were returned                 */
   /******************************************************************/
   if (SQLCODE == +466)               /* Result sets were returned   */
   {
     /* Establish a link between the result set and its locator      */
     EXEC SQL ASSOCIATE LOCATORS (:rs_loc1)
              WITH PROCEDURE SYSPROC.ADMIN_COMMAND_DSN;

     /* Associate a cursor with the result set                       */
     EXEC SQL ALLOCATE C1 CURSOR FOR RESULT SET :rs_loc1;

     /* Perform fetches using C1 to retrieve all rows from the       */
     /* result set                                                   */
     EXEC SQL FETCH C1 INTO :rownum, :text;
     while(SQLCODE==0)
     {
       EXEC SQL FETCH C1 INTO :rownum, :text;
     }

     EXEC SQL CLOSE C1;
   }

   return;
 }

Salida

Este procedimiento almacenado devuelve un mensaje de error, mensaje, si se produce un error.

El procedimiento almacenado devuelve un conjunto de resultados que contiene los mensajes de salida del subcomando DSN.

La siguiente tabla muestra el formato del conjunto de resultados devuelto en la tabla temporal global creada SYSIBM.DSN_SUBCMD_OUTPUT:

Tabla 1. Fila del conjunto de resultados para el conjunto de resultados ADMIN_COMMAND_DSN
Nombre de columna Tipo de datos Contenido
ROWNUM ENTERO Número de secuencia de la fila de la tabla, de 1 a n
TEXTO VARCHAR(255) Línea de mensaje de salida del subcomando DSN

Finalizar la información de la interfaz de programación de uso general.