此过程是为了返回本机IP地址,但有的返回空值,不知为什么?
create PROCEDURE dbo.GetLocalIP @IPHZH varchar(30) output AS
set xact_abort on
begin
create table #ip(id int identity(1,1),re varchar(2000))
declare @s varchar(1000),@pos int
set @s = 'ping ' + host_name() + ' -a -n 1 -l 1'
insert #ip(re) exec master..xp_cmdshell @s
select @IPHZH=stuff(left(re,charindex(']',re)-1),1,charindex('[',re),'') from #ip where id = 2
select @pos=0
while 1=1
begin
select @IPHZH=substring(@IPHZH,PATINDEX('%.%',@IPHZH)+1,len(@IPHZH)-PATINDEX('%.%',@IPHZH))
if @pos>0 break
select @pos=@pos+1
end
select @IPHZH='_'+STUFF(@IPHZH, PATINDEX('%.%',@IPHZH), 1, '_')
drop table #ip
end