2012-10-02 47 views
4

我用下面的查询来获取用户定义的数据类型的列表(尿分流旱厕):如何获取Sybase ASE上的用户定义数据类型列表?

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列表的正确方法是什么?

回答

6

试试此代码:

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