Chapter 3 Guide de référence du fichier de ressource de SGBD
Dans Oracle 8i et versions ultérieures, vous pouvez créer des index basés sur des fonctions et des expressions qui impliquent une ou plusieurs colonnes dans la table en cours d'indexation. Un index basé sur une fonction précalcule la valeur de la fonction ou de l'expression et la stocke dans l'index. La fonction ou l'expression va remplacer la colonne d'index dans la définition de l'index.
Une colonne d'index avec une expression est stockée dans les tables système ayant un type de données LONG qui ne peut pas être concaténé dans une instruction de chaîne lors du reverse engineering.
Pour contourner cette limitation, SqlListQuery
(catégorie Index dans le SGBD) contient un appel vers la requête définie par l'utilisateur SqlExpression
utilisée pour récupérer l'expression d'index dans une colonne ayant le type de données LONG et pour concaténer cette valeur dans une instruction de chaîne (le code suivant est un sous-ensemble de SqlListQuery
) :
select '%SCHEMA%', i.table_name, i.index_name, decode(i.index_type, 'BITMAP', 'bitmap', ''), decode(substr(c.column_name, 1, 6), 'SYS_NC', '%SqlExpression.Xpr'||i.table_name||i.index_name||c.column_position||'%', c.column_name)||' '||c.descend||', ', c.column_position from user_indexes i, user_ind_columns c where c.table_name=i.table_name and c.index_name=i.index_name [ and i.table_owner='%SCHEMA%'] [ and i.table_name='%TABLE%'] [ and i.index_name='%INDEX%']
L'exécution de SqlListQuery
appelle l'exécution de la requête définie par l'utilisateur SqlExpression
.
SqlExpression
est suivi d'une variable définie par l'utilisateur comme suit :
{VAR, VAL} select 'Xpr'||table_name||index_name||column_position, column_expression from all_ind_expressions where 1=1 [ and table_owner='%SCHEMA%'] [ and table_name='%TABLE%']
Le nom de la variable définie par l'utilisateur est unique, il s'agit du résultat de la concaténation de "Xpr", du nom de table, du nom d'index et de la position de colonne.
Copyright (C) 2008. Sybase Inc. All rights reserved. |
![]() |