首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

抓取函数也许存储过程中设计的对象名及相关字段

2012-12-16 
抓取函数或者存储过程中设计的对象名及相关字段根据业务需求,本人需要从函数或者存储过程中抓取涉及到的表

抓取函数或者存储过程中设计的对象名及相关字段
根据业务需求,本人需要从函数或者存储过程中抓取涉及到的表名和对应的字段名。
比如:

CREATE FUNCTION [dbo].[F112B员工交通补贴](@员工工号 int)
returns INT
as
begin
DECLARE @员工交通补贴 INT
set @员工交通补贴=(SELECT   单程交通补贴
FROM         dbo.T112C员工工作安排
WHERE     (登记确认时间 IN
                          ((SELECT     MAX(登记确认时间) AS 最新安排日期
                              FROM         dbo.T112C员工工作安排 AS T112C员工工作安排_1
                              WHERE     (审核确认状态 = 1) AND (终止确认状态 = 0)
                              GROUP BY 员工登记姓名代码))) AND (终止确认状态 = 0) AND (审核确认状态 = 1)AND 
                       (dbo.T112C员工工作安排.员工登记姓名代码 = ''+@员工工号+''))
                      return @员工交通补贴
end
我要获得的是: dbo.T112C员工工作安排.单程交通补贴
   dbo.T112C员工工作安排.登记确认时间
 dbo.T112C员工工作安排.审核确认状态
 dbo.T112C员工工作安排.终止确认状态
dbo.T112C员工工作安排. 员工登记姓名代码
dbo.T112C员工工作安排. 终止确认状态
dbo.T112C员工工作安排. 审核确认状态

这只是个列子,不知大家是否理解我的意思? 并请问各位如何实现?
[最优解释]
create table tb(txt nvarchar(500))
go
insert into tb
exec sp_helptext 'getmsgboard'
go
select distinct b.name as tbname,c.name as columnname from tb a left join sys.objects b on a.txt like '%'+b.name+'%'
left join sys.columns c on a.txt like '%'+c.name+'%' where b.name is not null or c.name is not null
/*
tbname                  columnname
--------------- ------------------------------------------
NULL                    id
NULL                    name
getmsgboard             msg
msgBoard                bname
msgBoard                ename
msgBoard                id
msgBoard                msg
msgBoard                msgdate
msgBoard                name


msgBoard                ord
msgBoard                pdate
msgBoard                see

(12 行受影响)

[其他解释]

引用:
请问 getmsgboard 是什么东东?
exec sp_helptext 'xxxx'
这里的xxxx是一个存储过程或者视图名,sp_helptext的功能是把xxxx的语句显示出来。但是对加密的无效。
[其他解释]
可以再加一个条件,b.type='U'
[其他解释]
请问 getmsgboard 是什么东东?

热点排行