Como obter uma lista de tipos de dados definidos pelo usuário no Sybase ASE?
-
12-12-2019 - |
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?
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