Frage

Ich verwende die folgende Abfrage, um die Liste der benutzerdefinierten Datentypen (UDDTs) abzurufen:

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

Unter Sybase 12.5 wurde früher eine einzelne Zeile pro UDDT zurückgegeben.Mit Sybase 15.x werden nun zwei Zeilen zurückgegeben:

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

Der Datentyp des UDDT ist tatsächlich varchar.Ich bin mir nicht sicher, wo das ist longsysname kommt von.Was ist der richtige Weg, um die Liste der UDDTs zurückzugeben, die sowohl in 12.5.x- als auch in 15.x-ASE-Datenbanken funktioniert?

War es hilfreich?

Lösung

Probieren Sie diesen Code aus:

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  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top