Pergunta

Eu uso a seguinte consulta para obter a lista de tipos de dados definidos pelo usuário (UDDTs):

SELECT USER_NAME(S.uid) as owner, S.name as Name, T.name as datatypename, 
         OBJECT_NAME(S.domain), OBJECT_NAME(S.tdefault) 
FROM systypes S,systypes T 
WHERE S.type=T.type AND T.usertype<100 AND T.usertype NOT IN(18,24,25,80) AND S.usertype>100  
ORDER BY 1, 2

No Sybase 12.5, ele costumava retornar uma única linha por UDDT.Agora com o Sybase 15.x, ele retorna 2 linhas:

owner   Name    datatypename 
'dbo'  'auid'  'varchar'
'dbo'  'auid'  'longsysname'

O tipo de dados do UDDT é na verdade varchar.Não tenho certeza de onde longsysname está vindo.Qual é a maneira correta de retornar a lista de UDDTs que funciona nos bancos de dados ASE 12.5.x e 15.x?

Foi útil?

Solução

Experimente este código:

select s1.name, 
        (select name 
         from systypes s2 
         where s2.usertype=(
                            select min( s3.usertype) 
                            from systypes s3 
                            where  s3.hierarchy=s1.hierarchy)
        ) base_type,  USER_NAME(s1.uid) as owner
    from systypes s1
    WHERE s1.usertype>100  
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top