Solución de problemas de SQL estático para DB2
En este tema se describen los errores comunes y los errores de codificación que pueden producirse al trabajar con la característica estática SQL para paquetes DB2 de Microsoft ADO.NET Proveedor para DB2 (proveedor de datos).
Errores comunes
En la tabla siguiente se describen los errores de servidor DB2 que pueden producirse con las acciones que se deben llevar a cabo para solucionarlos.
SQLCODE | Acción |
---|---|
SQLCODE -104 (instrucción no válida) | - Valide y coincida con los datos con el esquema de la base de datos. - Compruebe que los elementos de comando coinciden con el esquema del paquete. |
SQLCODE -204 (objeto no encontrado) | Compruebe que los nombres de objeto calificados (alias o de cuatro partes). |
SQLCODE -440 (parámetros incorrectos) | Compruebe que los elementos de comando coinciden con el esquema del paquete. |
SQLCODE -501 (cursor no abierto) | Compruebe que el comando incluye CALL STATIC. |
SQLCODE -551 (privilegios insuficientes) | Compruebe que se han establecido los privilegios para los paquetes CREATE, BIND y EXECUTE. |
SQLCODE -601 (nombre de objeto no único) | Compruebe la exclusividad de la convención de nomenclatura. |
Errores comunes de codificación
En la tabla siguiente se describen los errores comunes de codificación por área de características.
Área | Descripción |
---|---|
Documento XML | - Cada parámetro de entrada requiere un elemento parameter. Cada columna de salida requiere un elemento column. - Los nombres de cursor deben ser únicos dentro de un paquete. - Los elementos no están cerrados o no coinciden. |
Db2 para el nivel de aislamiento de IBM i | En HIS 2010, el nivel de aislamiento admitido es No Commit (NC), que se debe especificar en el documento XML como "IsolationLevel="NoCommit. |
Superposición de alias y procedimiento almacenado | - Se producirá un error en la creación del paquete cuando el nombre del paquete, el número de sección o el alias del paquete no sea único. - Si la creación del paquete se realiza correctamente, pero el nombre del alias es el mismo que un nombre de procedimiento almacenado, puede producirse un error en tiempo de ejecución (por ejemplo, SQLCODE -440 para parámetros no válidos). Como alternativa, el servidor DB2 puede devolver un conjunto de resultados inesperado. |
Sin nombre de alias | - Si el archivo de metadatos no contiene un nombre de alias, el cliente de Microsoft ejecuta la instrucción como un procedimiento almacenado. - Si existe un procedimiento almacenado con el mismo nombre, se ejecutará el procedimiento almacenado y el programa puede experimentar resultados inesperados. - Si no hay ningún procedimiento almacenado con el mismo nombre, el servidor de bases de datos devolverá un error que indica que el nombre del objeto no está definido (SQLCODE -204). |