SQLColumns
SQLColumns retourne SQL_SUCCESS qu'il existe ou pas des valeurs pour les paramètres CatalogName, TableName ou ColumnName. SQLFetch retourne SQL_NO_DATA lorsque des valeurs non valides sont utilisées dans ces paramètres.
[!REMARQUE]
Pour les types de valeur de grande taille, tous les paramètres « length » sont retournés avec la valeur SQL_SS_LENGTH_UNLIMITED.
SQLColumns peut être exécuté sur un curseur côté serveur statique. Une tentative d'exécution de SQLColumns sur un curseur pouvant être mis à jour (dynamique ou jeu de clés) retourne SQL_SUCCESS_WITH_INFO, indiquant que le type de curseur a été modifié.
Le pilote ODBC SQL Server Native Client prend en charge les informations de création de rapports pour les tables des serveurs liés en acceptant un nom en deux parties pour le paramètre CatalogName : Nom_Serveur_Lié.Nom_Catalogue.
Pour les applications ODBC 2.x qui n'utilisent pas les caractères génériques dans TableName, SQLColumns retourne des informations sur les tables dont les noms correspondent à TableName et qui sont la propriété de l'utilisateur en cours. Si l'utilisateur actuel ne possède aucune table dont le nom correspond au paramètre TableName, SQLColumns retourne des informations sur toutes les tables possédées par d'autres utilisateurs où le nom de table correspond au paramètre TableName. Pour les applications ODBC 2.x utilisant les caractères génériques, SQLColumns retourne toutes les tables dont les noms correspondent à TableName. Pour les applications ODBC 3.x, SQLColumns retourne toutes les tables dont les noms correspondent à TableName indépendamment du propriétaire ou de l'utilisation des caractères génériques.
Le tableau ci-dessous dresse la liste des colonnes renvoyées par le jeu de résultats :
Nom de la colonne |
Description |
---|---|
DATA_TYPE |
Retourne SQL_VARCHAR, SQL_VARBINARY ou SQL_WVARCHAR pour les types de données varchar(max). |
TYPE_NAME |
Retourne "varchar", "varbinary" ou "nvarchar" pour les types de données varchar(max), varbinary(max) et nvarchar(max). |
COLUMN_SIZE |
Retourne SQL_SS_LENGTH_UNLIMITED pour les types de données varchar(max) qui indiquent que la taille de la colonne est illimitée. |
BUFFER_LENGTH |
Retourne SQL_SS_LENGTH_UNLIMITED pour les types de données varchar(max) qui indiquent que la taille de la mémoire tampon est illimitée. |
SQL_DATA_TYPE |
Retourne SQL_VARCHAR, SQL_VARBINARY ou SQL_WVARCHAR pour les types de données varchar(max). |
CHAR_OCTET_LENGTH |
Retourne la longueur maximale d'une colonne de type char ou binary. Retourne 0 pour indiquer que la taille est illimitée. |
SS_XML_SCHEMACOLLECTION_CATALOG_NAME |
Retourne le nom du catalogue dans lequel un nom de collection de schémas XML est défini. Si le nom du catalogue est introuvable, cette variable contient une chaîne vide. |
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME |
Retourne le nom du schéma dans lequel un nom de collection de schémas XML est défini. Si le nom du schéma est introuvable, cette variable contient une chaîne vide. |
SS_XML_SCHEMACOLLECTION_NAME |
Retourne le nom d'une collection de schémas XML. Si le nom est introuvable, cette variable contient une chaîne vide. |
SS_UDT_CATALOG_NAME |
Nom du catalogue contenant le type défini par l'utilisateur (UDT). |
SS_UDT_SCHEMA_NAME |
Nom du schéma contenant le type défini par l'utilisateur (UDT). |
SS_UDT_ASSEMBLY_TYPE_NAME |
Nom qualifié de l'assembly du type défini par l'utilisateur (UDT). |
Pour les UDT, la colonne TYPE_NAME existante permet d'indiquer le nom de l'UDT ; par conséquent, aucune colonne supplémentaire correspondante ne doit être ajoutée au jeu de résultats de SQLColumns ou SQLProcedureColumns. Le champ DATA_TYPE pour un paramètre ou une colonne de type UDT est SQL_SS_UDT.
Pour le type UDT des paramètres, vous pouvez utiliser les nouveaux descripteurs spécifiques au pilote définis ci-dessus pour obtenir ou définir les propriétés de métadonnées supplémentaires d'un UDT, si le serveur retourne ou nécessite ces informations.
Lorsqu'un client se connecte à SQL Server et appelle SQLColumns, l'utilisation de valeurs NULL ou de valeurs de caractère générique pour le paramètre d'entrée de catalogue ne retourne pas les informations d'autres catalogues. Seules les informations sur le catalogue actuel sont retournées. Le client peut appeler en premier SQLTables à déterminer dans quel catalogue la table désirée se trouve. Le client peut utiliser ensuite cette valeur de catalogue pour le paramètre d'entrée de catalogue dans son appel à SQLColumns afin d'extraire les informations relatives aux colonnes de cette table.
SQLColumns et paramètres table
Le jeu de résultats retourné par SQLColumns dépend de la valeur de SQL_SOPT_SS_NAME_SCOPE. Pour plus d'informations, consultez SQLSetStmtAttr. Les colonnes suivantes ont été ajoutées pour les paramètres table :
Nom de la colonne |
Type de données |
Contenu |
---|---|---|
SS_IS_COMPUTED |
Smallint |
Pour une colonne d'un TABLE_TYPE, SQL_TRUE si la colonne est une colonne calculée ; sinon, SQL_FALSE. |
SS_IS_IDENTITY |
Smallint |
SQL_TRUE si la colonne est une colonne d'identité ; sinon, SQL_FALSE. |
Pour plus d'informations sur les paramètres table, consultez Paramètres table (ODBC).
Prise en charge par SQLColumns des fonctionnalités de date et heure améliorées
Pour plus d'informations sur les valeurs retournées pour les types date/time, consultez Métadonnées de catalogue.
Pour plus d'informations, consultez Améliorations de la date et de l'heure (ODBC).
Prise en charge SQLColumns pour les types CLR volumineux définis par l'utilisateur
SQLColumns prend en charge les types CLR volumineux définis par l'utilisateur. Pour plus d'informations, consultez Types CLR volumineux définis par l'utilisateur (ODBC).
Prise en charge SQLColumns pour les colonnes fragmentées
Deux colonnes supplémentaires SQL Server spécifiques ont été ajoutées au jeu de résultats pour SQLColumns :
Nom de la colonne |
Type de données |
Description |
---|---|---|
SS_IS_SPARSE |
Smallint |
Si la colonne est une colonne fragmentée, SQL_TRUE ; sinon, SQL_FALSE. |
SS_IS_COLUMN_SET |
Smallint |
Si la colonne est la colonne column_set, SQL_TRUE ; sinon, SQL_FALSE. |
Conformément à la spécification ODBC, SS_IS_SPARSE et SS_IS_COLUMN_SET apparaissent avant toutes les colonnes spécifiques aux pilotes ajoutées aux versions SQL Server antérieures à SQL Server 2008, et après toutes les colonnes mandatées par ODBC.
Le jeu de résultats retourné par SQLColumns dépend de la valeur de SQL_SOPT_SS_NAME_SCOPE. Pour plus d'informations, consultez SQLSetStmtAttr.
Pour plus d'informations sur les colonnes fragmentées dans ODBC, consultez Prise en charge des colonnes fragmentées (ODBC).