SQL Query在SyBase中获取存储过程参数和数据类型

时间:2016-10-16 22:28:27

标签: stored-procedures sybase sybase-ase

我需要查询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,我只需要提取该参数信息。

1 个答案:

答案 0 :(得分:0)

我自己设法完成了这个工作。 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}