我使用以下查询来获取用户定义数据类型(UDDT)的列表:
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
在Sybase 12.5上,它用于返回每个UDDT返回一行。现在使用Sybase 15.x,它返回2行:
owner Name datatypename
'dbo' 'auid' 'varchar'
'dbo' 'auid' 'longsysname'
UDDT的数据类型实际上是varchar
。我不确定longsysname
的来源。
返回在12.5.x和15.x ASE数据库中都有效的UDDT列表的正确方法是什么?
答案 0 :(得分:7)
试试这段代码:
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