遍历数据库中的用户存储过程,获得每个存储过程的参数名、参数类型、存储过程名称等信息以xml的形式保存

来源:互联网 发布:全真教 知乎 编辑:程序博客网 时间:2024/05/17 07:40
遍历数据库中的用户存储过程,获得每个存储过程的参数名、参数类型、存储过程名称等信息以xml的形式保存 主要解答者: zjcxc 提交人: zjcxc 感谢: j9988、zjcxc 审核者: gmlxf 社区对应贴子: 查看      A :
小弟想要能够遍历数据库中的用户存储过程,希望能够获得每个存储过程的参数名、参数类型、存储过程名称等信息  
以xml的形式保存,用于对数据库的映射  
 
有谁知道吗?分不够可以加。  
---------------------------------------------------------------  
use  数据库名  
go  
 
--存储过程结构生成XML文档  
 
create  table  ##tb(re  varchar(8000))  
insert  into  ##tb
select  '<?xml  version=''1.0''  encoding="gb2312"?>  
<数据库>'+db_name()  
 
insert  into  ##tb  
select  case  b.colid  when  1  then  '<存储过程名称>'+a.name  else  '   '  end+'  
  <参数  参数名称="'+b.name  
  +'"  参数类型="'+c.name  
  +case  when  c.name  in  ('binary','char','nchar','nvarchar','varbinary','varchar','float','real')  
 then  '('+cast(b.prec  as  varchar)+')'  
 when  c.name  in  ('decimal','numeric')  
 then  '('+cast(b.prec  as  varchar)+','+cast(b.scale  as  varchar)+')'  
  else  ''  end+'"></参数>'  
  +case  b.colid  when  (select  max(colid)  from  syscolumns  where  id=a.id)  
  then  '  
</存储过程名称>'  else  ''  end  
from  sysobjects  a
  join  syscolumns  b  on  a.id=b.id  
  join  systypes  c  on  b.xusertype=c.xusertype  
where  a.xtype='P'  and  a.status>=0  
order  by  a.name,b.colid  
 
insert  into  ##tb  values('</数据库>')  
 
exec  master..xp_cmdshell  'bcp  ##tb  out  c:/a.xml  /c'  
drop  table  ##tb
原创粉丝点击