【问题标题】:SQL Query to get Stored Procedure parameters and datatypes in SyBase在 SyBase 中获取存储过程参数和数据类型的 SQL 查询
【发布时间】:2016-10-16 22:28:26
【问题描述】:

我需要查询 SyBase 并返回存储过程的参数和数据类型。我正在寻找一个 SQL 查询来做到这一点。在 SQL Server 中我可以使用

select parameters.name as fieldname, types.name as field type
from sys.parameters
inner join sys.type on parameters.system_type_id = types.system_type_id
where object_id = <id> 
and types.name <> 'sys name' 
order by filename

所以我希望在 SyBase 中做一些类似的事情。我知道存储过程的id,我只需要提取那个参数信息。

【问题讨论】:

    标签: stored-procedures sybase sap-ase


    【解决方案1】:

    我自己设法解决了这个问题。 SQL获取存储过程的参数和数据类型。

    SELECT col.name AS fieldname, ty.name AS fieldtype
    FROM sysobjects t 
    JOIN syscolumns col ON t.id=col.id 
    JOIN systypes ty ON ty.usertype=col.usertype
    WHERE t.id={key}
    

    为了获得相同的表。

    SELECT col.name AS fieldname, ty.name AS fieldtype,
    CASE WHEN col.name IN (
    index_col(object_name(si.id), indid, 1),
    index_col(object_name(si.id), indid, 2),
    index_col(object_name(si.id), indid, 3),
    index_col(object_name(si.id), indid, 4),
    index_col(object_name(si.id), indid, 5),
    index_col(object_name(si.id), indid, 6),
    index_col(object_name(si.id), indid, 7),
    index_col(object_name(si.id), indid, 8)
    ) THEN 1 ELSE 0 END AS isPK
    FROM sysobjects t 
    JOIN syscolumns col ON t.id=col.id 
    JOIN systypes ty ON ty.usertype=col.usertype
    LEFT JOIN sysindexes si ON si.id=t.id AND si.name LIKE '%pk%'
    WHERE t.id={key}
    

    【讨论】:

    • syscolumns 的架构是什么? sys.syscolumns 不是正确的,从 15ish 开始,我正在使用你在 syscolumns 上出现歧义错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2017-07-30
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多