Compartir a través de


Objeto Command (proveedor OLE DB para DB2)

Un consumidor OLE DB crea el objeto Command o un proveedor de servicios en nombre de un consumidor. Un objeto Command se usa para ejecutar un comando específico de la arquitectura de base de datos relacional distribuida (DRDA) en un servidor de base de datos DB2 remoto que funciona como servidor de aplicaciones DRDA. El objeto Command admite la ejecución de comandos Lenguaje de consulta estructurado (SQL) cuando se conecta para quitar servidores de aplicaciones DRDA.

Los comandos se usan para la definición de datos, como la creación de una tabla o la concesión de privilegios, y la manipulación de datos, como la actualización o eliminación de filas. Un caso especial de manipulación de datos mediante el objeto Command es la creación de conjuntos de filas basados en tablas DB2. Cuando se usa el texto del comando con servidores de base de datos DB2, los nombres de tabla especificados en un comando se pasan de forma predeterminada como mayúsculas. Si un nombre de tabla usa mayúsculas y minúsculas mixtas, el nombre de la tabla debe pasarse en una cadena entre comillas.

Para que un consumidor pueda usar un comando, debe determinar si se admiten comandos. Para ello, el consumidor llama a QueryInterface para IDBCreateCommand en una sesión. Si se expone esta interfaz, el proveedor admite comandos. Para crear un comando, el consumidor llama a IDBCreateCommand::CreateCommand en la sesión. Se puede usar una sola sesión para crear varios comandos.

Cuando se crea el comando por primera vez, no contiene un texto de comando. El consumidor establece el texto del comando con ICommandText::SetCommandText. Dado que la sintaxis del comando de texto es específica del proveedor, el consumidor pasa el identificador único global (GUID) de la sintaxis que se va a usar. Para su uso con Proveedor OLE DB de Microsoft para DB2, el GUID se DBGUID_DBSQL. Tenga en cuenta que, en proveedor OLE DB para DB2, este GUID indica que el comando de texto es un subconjunto de ANSI SQL. El nivel en el que el proveedor admite ANSI SQL se especifica mediante la propiedad DBPROP_SQLSUPPORT. Esta propiedad es una máscara de bits que especifica el nivel de compatibilidad con SQL.

La sintaxis admitida por el proveedor OLE DB para DB2 para el texto del comando es como Entry-Level ANSI SQL 92 (con algunas excepciones basadas en la plataforma y la versión del servidor DB2).

Los comandos SQL válidos se documentan en las siguientes publicaciones publicadas por IBM:

  • DB2 para la referencia de SQL z/OS, versión 9

  • DB2 para la referencia de SQL z/OS, versión 8

  • DB2 para IBM i SQL Reference, versión 6, versión 1

  • DB2 para la referencia de IBM i SQL, versión 5, versión 4

  • DB2 para la referencia de SQL de LUW, versión 9

    Para ejecutar el comando, el consumidor llama a ICommand::Execute. Si el texto del comando especifica el comando para abrir un conjunto de filas, Execute crea una instancia del conjunto de filas y devuelve un puntero de interfaz a él.

    Las siguientes interfaces del objeto Command son compatibles con la versión actual del proveedor OLE DB para DB2:

  • IAccessor

  • IColumnsInfo

  • ICommand

  • ICommandPrepare

  • ICommandProperties

  • ICommandText

  • ICommandWithParameters

  • IConvertType

  • ISupportErrorInfo

    Al usar el objeto ICommand, es posible que Proveedor OLE DB de Microsoft para DB2 no deriven información de tipo de parámetro del almacén de datos, según la plataforma y la versión de DB2. La aplicación cliente OLE DB puede proporcionar la información del tipo de parámetro nativo a través de la función ICommandWithParameters::SetParameterInfo . El proveedor OLE DB usa la información de tipo especificada por SetParameterInfo para determinar cómo convertir los datos de parámetros del tipo proporcionado por el consumidor (como se indica en el valor wType de la estructura de enlace) al tipo nativo utilizado por el almacén de datos. Cuando el consumidor especifica un tipo de datos con valores de precisión, escala y tamaño conocidos, el proveedor OLE DB para DB2 omite cualquier información proporcionada por el consumidor para la precisión, la escala o el tamaño.

    La información que el consumidor suministra debe ser correcta y debe proporcionarse para todos los parámetros. El proveedor OLE DB para DB2 puede comprobar la información proporcionada con los metadatos del parámetro, en función de la plataforma y la versión de DB2, aunque el proveedor OLE DB siempre determinará que los valores especificados son valores legales para el proveedor. La información que el consumidor suministra debe ser correcta y debe proporcionarse para todos los parámetros. El proveedor OLE DB para DB2 no puede comprobar la información proporcionada con los metadatos del parámetro, aunque el proveedor OLE DB puede determinar que los valores especificados son valores legales para el proveedor. El resultado de ejecutar un comando con información de parámetro incorrecta o pasar información de parámetros para el número incorrecto de parámetros no está definido. Por ejemplo, si el tipo de parámetro es LONG y el consumidor especifica un indicador de tipo de DBTYPE_STR en ICommandWithParameters::SetParameterInfo, el proveedor OLE DB para DB2 convierte los datos en una cadena antes de enviarlos al almacén de datos. Dado que el almacén de datos no espera un valor LONG, es probable que se produzca un error.