Especificación: | CLI de DB2 2.1 | ODBC 1.0 |
|
SQLForeignKeys() devuelve información sobre claves foráneas para la tabla especificada. La información se devuelve en un conjunto resultante de SQL, que se puede procesar utilizando las mismas funciones que se utilizan para recuperar un conjunto resultante generado por una consulta. PKCatalogName, NameLength1, PKSchemaName, NameLength2, FKCatalogName, NameLength4, FKSchemaName y NameLength5 se ignoran. Las columnas 1, 2, 5, 6, 12 y 13 del conjunto resultante devuelto son siempre una serie de longitud cero. Las columnas 10, 11 y 14 del conjunto resultante devuelto son siempre cero.
Sintaxis
SQLRETURN SQLForeignKeys ( SQLHSTMT StatementHandle, /* hstmt */ SQLCHAR *FAR PKCatalogName, /* szPkCatalogName */ SQLSMALLINT NameLength1, /* cbPkCatalogName */ SQLCHAR *FAR PKSchemaName, /* szPkSchemaName */ SQLSMALLINT NameLength2, /* cbPkSchemaName */ SQLCHAR *FAR PKTableName, /* szPkTableName */ SQLSMALLINT NameLength3, /* cbPkTableName */ SQLCHAR *FAR FKCatalogName, /* szFkCatalogName */ SQLSMALLINT NameLength4 /* cbFkCatalogName */ SQLCHAR *FAR FKSchemaName, /* szFkSchemaName */ SQLSMALLINT NameLength5, /* cbFkSchemaName */ SQLCHAR *FAR FKTableName, /* szFkTableName */ SQLSMALLINT NameLength6); /* cbFkTableName */
Argumentos de la función
Tabla 58. Argumentos de SQLForeignKeys
Tipo de datos | Argumento | Uso | Descripción |
---|---|---|---|
SQLHSTMT | StatementHandle | entrada | Descriptor de contexto de sentencia. |
SQLCHAR* | PKCatalogName | entrada | Calificador de catálogo de la tabla de claves primarias. DB2 Everyplace no tiene en cuenta este campo. |
SQLSMALLINT | NameLength1 | entrada | Longitud de PKCatalogName. DB2 Everyplace no tiene en cuenta este campo. |
SQLCHAR* | PKSchemaName | entrada | Calificador de esquema de la tabla de claves primarias. DB2 Everyplace no tiene en cuenta este campo. |
SQLSMALLINT | NameLength2 | entrada | Longitud de PKSchemaName. DB2 Everyplace no tiene en cuenta este campo. |
SQLCHAR* | PKTableName | entrada | Nombre de la tabla donde reside la clave primaria. |
SQLSMALLINT | NameLength3 | entrada | Longitud de PKTableName. |
SQLCHAR* | FKCatalogName | entrada | Calificador de catálogo de la tabla donde reside la clave foránea. DB2 Everyplace no tiene en cuenta este campo. |
SQLSMALLINT | NameLength4 | entrada | Longitud de FKCatalogName. DB2 Everyplace no tiene en cuenta este campo. |
SQLCHAR* | FKSchemaName | entrada | Calificador de esquema de la tabla donde reside la clave foránea. DB2 Everyplace no tiene en cuenta este campo. |
SQLSMALLINT | NameLength5 | entrada | Longitud de FKSchemaName. DB2 Everyplace no tiene en cuenta este campo. |
SQLCHAR* | FKTableName | entrada | Nombre de la tabla donde reside la clave foránea. |
SQLSMALLINT | NameLength6 | entrada | Longitud de FKTableName. |
Uso
Si PKTableName contiene un nombre de tabla y FKTableName es una serie de caracteres vacía, SQLForeignKeys() devuelve un conjunto resultante que contiene la clave primaria de la tabla especificada y todas las claves foráneas (en otras tablas) que hacen referencia a la clave primaria.
Si FKTableName contiene un nombre de tabla y PKTableName es una serie de caracteres vacía, SQLForeignKeys() devuelve un conjunto resultante que contiene todas las claves foráneas de la tabla especificada y las claves primarias (en otras tablas) a las que hacen referencia.
Si tanto PKTableName como FKTableName contienen nombres de tablas, SQLForeignKeys() devuelve las claves foráneas de la tabla especificada en FKTableName que hacen referencia a la clave primaria de la tabla especificada en PKTableName. El resultado debe ser una sola clave como máximo.
Si se solicitan las claves foráneas asociadas a una clave primaria, el conjunto resultante se ordena de acuerdo con FKTABLE_NAME y ORDINAL_POSITION. Si se solicitan las claves primarias asociadas a una clave foránea, el conjunto resultante se ordena de acuerdo con PKTABLE_NAME y ORDINAL_POSITION.
Las columnas VARCHAR del conjunto resultante de las funciones de catálogo se han declarado con un atributo de longitud máxima 128 para que sea coherente los límites de SQL92.
Aunque en futuros releases de SQL se pueden añadir nuevas columnas y modificarse los nombres de las columnas existentes, la posición de las columnas actuales no cambiará.
El conjunto resultante contiene las columnas siguientes:
Los nombres de columna utilizados por CLI de DB2 siguen el estilo de especificación de X/Open para CLI CAE. El tipo, contenido y orden de las columnas son idénticos a los definidos para el conjunto resultante SQLForeignKeys() en ODBC.
Códigos de retorno
Diagnósticos
Tabla 59. SQLSTATE de SQLForeign
SQLSTATE | Descripción | Explicación |
---|---|---|
24000 | Estado no válido del cursor. | Ya hay un cursor abierto para el descriptor de contexto de sentencia. |
40003 08S01 | Error en el enlace de comunicaciones. | El enlace de comunicaciones entre la aplicación y la fuente de datos se interrumpió antes de finalizar la función. |
HY001 | Error de asignación de memoria. | CLI de DB2 no puede asignar la memoria necesaria para ejecutar o finalizar la función. |
HY009 | Valor no válido de argumento. | Los argumentos PKTableName y FKTableName eran ambos punteros nulos. |
HY010 | Error de secuencia de función. | Se llama a la función mientras se produce una operación de datos en ejecución (SQLPrepare() o SQLExecDirect()). |
HY014 | No hay más descriptores de contexto. | CLI de DB2 no puede asignar un descriptor de contexto debido a recursos internos. |
HY090 | Longitud no válida de la serie de caracteres o del almacenamiento intermedio. | El valor de uno de los argumentos de longitud de nombre es menor que 0, pero no igual a SQL_NTS |
Restricciones
Ninguna.
Consulta relacionada