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