+ -
当前位置:首页 → 问答吧 → 根据存储过程的名称查询存储过程所有的列的名称和类型

根据存储过程的名称查询存储过程所有的列的名称和类型

时间:2011-11-10

来源:互联网

例如我有个存储过程 


CREATE PROC usp_psName
@int id
AS
SELECT 1 AS N1,'2' AS N2,getdate() N3 FROM TABLE




我要查的结果是

 N1 INT
 N2 VARCHAR
 N3 DATETIME

 

作者: qjy5277   发布时间: 2011-11-10

我还以为是视图

作者: ssp2009   发布时间: 2011-11-10

SQL code

CREATE PROC usp_psName
@int id
AS
select 'N1', 'INT' union all
select 'N2', 'VARCHAR' union all
select 'N3', 'DATETIME'

作者: ap0405140   发布时间: 2011-11-10

很难.
要根据存储过程的名,去查存储过程的文本,再分析文本到所查的表结构中查数据类型,太麻烦了!而且,如果存储过程查多个表呢?

作者: qianjin036a   发布时间: 2011-11-10

其实我还不太明白楼主的意思.

作者: ap0405140   发布时间: 2011-11-10

= =应该是能实现的我看一些ORM框架就能做到

作者: qjy5277   发布时间: 2011-11-10

引用 5 楼 qjy5277 的回复:
= =应该是能实现的我看一些ORM框架就能做到


要在限定的条件下进行,真的很难.从文本去分析判断,BI还没达到人的脑袋那样的聪明程度.

作者: qianjin036a   发布时间: 2011-11-10

SQL code
--查询所有存储过程
select Pr_Name  as [存储过程], [参数]=stuff((select ''+[Parameter] 
    from (
        select Pr.Name as Pr_Name,parameter.name +' ' +Type.Name + ' ('+convert(varchar(32),parameter.max_length)+')' as Parameter
        from sys.procedures Pr left join 
        sys.parameters parameter  on Pr.object_id = parameter.object_id
        inner join sys.types Type on parameter.system_type_id = Type.system_type_id
        where type = 'P' 
    ) t where Pr_Name=tb.Pr_Name for xml path('')), 1, 1, '')
from (
    select Pr.Name as Pr_Name,parameter.name +' ' +Type.Name + ' ('+convert(varchar(32),parameter.max_length)+')' as Parameter
    from sys.procedures Pr left join 
    sys.parameters parameter  on Pr.object_id = parameter.object_id
    inner join sys.types Type on parameter.system_type_id = Type.system_type_id
    where type = 'P' 
)tb
where Pr_Name not like 'sp_%' --and Pr_Name not like 'dt%'
group by Pr_Name
order by Pr_Name

作者: fredrickhu   发布时间: 2011-11-10

列名怎么去查真不知道 

如果是表的话可以 存储过程难。

作者: fredrickhu   发布时间: 2011-11-10

你的存储过程太简单了
CREATE PROC usp_psName
@int id
AS
SELECT 1 AS N1,'2' AS N2,getdate() N3 FROM TABLE

这样的存储过程恐怕不多.功能稍强一点的,就会比这复杂得多,一般的存储过程都得几十行,多条查询语句,还有子查询,连接什么的,关键是没有什么规律,没法用简单逻辑判断的方法去获取你想要的东西.

作者: qianjin036a   发布时间: 2011-11-10

SQL code
sp_depends usp_psName

作者: ssp2009   发布时间: 2011-11-10

简单的只是个例子可能还有更复杂的

作者: qjy5277   发布时间: 2011-11-10