SQLPrimaryKeys--Obtener columnas de clave primaria de una tabla

Finalidad

Especificación: CLI de DB2 2.1 ODBC 1.0

SQLPrimaryKeys() devuelve una lista de nombres de columna que abarcan la clave primaria de una tabla. La información se devuelve en un conjunto resultante de SQL, que se puede recuperar utilizando las mismas funciones que se utilizan para procesar un conjunto resultante generado por una consulta. No se tienen en cuenta los parámetros CatalogName, NameLength1, SchemaName y NameLength2. Las columnas 1, 2 y 6 del conjunto resultante devuelto son siempre una serie de longitud cero.

Sintaxis

SQLRETURN   SQLPrimaryKeys  (
                  SQLHSTMT          StatementHandle,  /* hstmt */
                  SQLCHAR      FAR  *CatalogName,     /* szCatalogName */
                  SQLSMALLINT       NameLength1,      /* cbCatalogName */
                  SQLCHAR      FAR  *SchemaName,      /* szSchemaName */
                  SQLSMALLINT       NameLength2,      /* cbSchemaName */
                  SQLCHAR      FAR  *TableName,       /* szTableName */
                  SQLSMALLINT       NameLength3);     /* cbTableName */
 

Argumentos de la función

Tabla 76. Argumentos de SQLPrimaryKeys

Tipo de datos Argumento Uso Descripción
SQLHSTMT StatementHandle entrada Descriptor de contexto de sentencia.
SQLCHAR* CatalogName entrada Calificador de catálogo de un nombre de tabla que consta de tres partes.

DB2 Everyplace no tiene en cuenta este campo.

SQLSMALLINT NameLength1 entrada Longitud de CatalogName. DB2 Everyplace no tiene en cuenta este campo.
SQLCHAR* SchemaName entrada Calificador de esquema del nombre de tabla. DB2 Everyplace no tiene en cuenta este campo.
SQLSMALLINT NameLength2 entrada Longitud de SchemaName. DB2 Everyplace no tiene en cuenta este campo.
SQLCHAR* TableName entrada Nombre de tabla.
SQLSMALLINT NameLength3 entrada Longitud de TableName.

Uso

SQLPrimaryKeys() devuelve las columnas de clave primaria de una tabla individual. No se pueden utilizar patrones de búsqueda para especificar el nombre de tabla.

Si la tabla especificada no contiene una clave primaria, se devuelve un conjunto resultante vacío.

Las llamadas a SQLPrimaryKeys() se correlacionan, en muchos casos, formando consultas complejas y caras sobre el catálogo del sistema.

Aunque en futuros releases se pueden añadir nuevas columnas y modificarse los nombres de las columnas existentes, la posición de las columnas actuales no cambia.

El conjunto resultante contiene esta columnas ordenadas por TABLE_NAME y ORDINAL_POSITION

Columna 1 TABLE_CAT (VARCHAR(128))
Siempre es una serie de longitud cero.

Columna 2 TABLE_SCHEM (VARCHAR(128))
Siempre es una serie de longitud cero.

Columna 3 TABLE_NAME (VARCHAR(128) no nulo)
Nombre de la tabla especificada.

Columna 4 COLUMN_NAME (VARCHAR(128) no nulo)
Nombre de la columna de clave primaria.

Columna 5 ORDINAL_POSITION (SMALLINT no nulo)
Número de secuencia de columna en la clave primaria, comenzando en el uno.

Columna 6 PK_NAME (VARCHAR(128))
Siempre es una serie de longitud cero.

Los nombres de columna utilizados por DB2 CLI/ODBC siguen el estilo de especificación de X/Open CLI CAE.

Códigos de retorno

Diagnósticos

Tabla 77. SQLSTATE de SQLPrimaryKey

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.
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

Utilice las llamadas a SQLPrimaryKeys() con moderación y guarde los resultados en lugar de repetir llamadas.

Consulta relacionada