Sdílet prostřednictvím


Argumenty vzorových hodnot

Některé argumenty ve funkcích katalogu, například argument TableName v tabulkách SQL, přijímají vzory hledání. Tyto argumenty přijímají vzory hledání, pokud je atribut příkazu SQL_ATTR_METADATA_ID nastaven na SQL_FALSE; jsou argumenty identifikátorů, které nepřijímají vyhledávací vzor, pokud je tento atribut nastaven na SQL_TRUE.

Znaky vyhledávacího vzoru jsou:

  • Podtržítko (_), které představuje libovolný jeden znak.

  • Znak procenta (%), který představuje libovolnou posloupnost nulových nebo více znaků.

  • Escape znak, který je specifický pro ovladač a slouží k zahrnutí podtržítek, znaku procenta a escape znaku jako literálu. Pokud escape znak předchází nespeciální znak, escape znak nemá žádný zvláštní význam. Pokud unikační znak předchází speciálnímu znaku, neutralizuje speciální znak. Například "\a" by se považovalo za dva znaky, "\" a "a", ale "\%" by byly považovány za ne specialní jeden znak "%".

Řídicí znak se načte s možností SQL_SEARCH_PATTERN_ESCAPE v SQLGetInfo. Musí předcházet jakémukoli podtržítku, znaku procenta nebo řídicímu znaku v argumentu, který přijímá vzory hledání, aby tento znak zahrnoval jako literál. Příklady jsou uvedené v následující tabulce.

Vzor hledání Description
%A% Všechny identifikátory obsahující písmeno A
ABC_ Všechny čtyři identifikátory znaků začínající na ABC
ABC\_ Identifikátor ABC_ za předpokladu, že řídicí znak je zpětné lomítko (\)
\\% Všechny identifikátory začínající zpětným lomítkem (\), za předpokladu, že řídicí znak je zpětné lomítko

Zvláštní pozornost je třeba věnovat úniku speciálních znaků ve vzorech hledání v argumentech, které přijímají vzory hledání. To platí zejména pro znak podtržítka, který se běžně používá v identifikátorech. Běžnou chybou v aplikacích je načtení hodnoty z jedné funkce katalogu a předání této hodnoty do argumentu vzoru hledání v jiné funkci katalogu. Předpokládejme například, že aplikace načte název tabulky MY_TABLE ze sady výsledků pro tabulky SQLTables a předá ji službě SQLColumns , aby načetla seznam sloupců v MY_TABLE. Místo získání sloupců pro MY_TABLE aplikace získá sloupce pro všechny tabulky, které odpovídají MY_TABLE vzoru hledání, například MY_TABLE, MY1TABLE, MY2TABLE atd.

Poznámka:

ODBC 2. Ovladače x nepodporují vzory hledání v argumentu CatalogName v tabulkách SQL. Ovladače ODBC 3*.x* přijímají v tomto argumentu vzorce hledání, pokud je atribut prostředí SQL_ATTR_ ODBC_VERSION nastaven na SQL_OV_ODBC3; nepřijímají v tomto argumentu vzory hledání, pokud je nastavena na SQL_OV_ODBC2.

Předání nulového ukazatele na argument vzoru hledání neomezují hledání daného argumentu; to znamená, že ukazatel null a vzor hledání % (všechny znaky) jsou ekvivalentní. Vyhledávací vzor nulové délky – to znamená platný ukazatel na řetězec nulové délky – odpovídá pouze prázdnému řetězci ("").