sqlserver的函数如何转换为oracle 10g的函数,这是一个转换ip地址的函数原ip地址不带“点”
USE [_db]
GO
/****** Object: UserDefinedFunction [dbo].[uf_ip_2] Script Date: 07/13/2013 12:10:48 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO/****** 对象: 用户定义的函数 dbo.uf_ip_2 脚本日期: 2012-7-1 17:15:31 ******/
ALTER FUNCTION [dbo].[uf_ip_2] (@in bigint)
RETURNS varchar(15) AS
BEGIN
declare @ret as char(32)
declare @val as bigint
declare @bt as char
declare @ip as varchar(15)
declare @str as char(8)
declare @i as bigint
declare @j as bigintselect @ret=''
select @val=@in
while @val > 0
begin
select @val=@in/2
select @bt=@in-@val*2
select @in=@val
select @ret=@bt+@ret
endselect @ret=substring('00000000000000000000000000000000',1,32-len(@ret))+@ret
select @i=0
select @ip=''
while @i<4
begin
select @j=0
select @str=substring(@ret,@i*8+1,8)
select @val=0
while @j<8
begin
select @val=@val+substring(@str,@j+1,1)*power(2,7-@j)
select @j=@j+1
end
if @i<3
begin
select @ip=@ip+rtrim(str(@val,3))+'.'
end
else
begin
select @ip=@ip+rtrim(str(@val,3))
end
select @i=@i+1
end return replace(@ip,' ','0')
END
USE [_db]
GO
/****** Object: UserDefinedFunction [dbo].[uf_ip_2] Script Date: 07/13/2013 12:10:48 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO/****** 对象: 用户定义的函数 dbo.uf_ip_2 脚本日期: 2012-7-1 17:15:31 ******/
ALTER FUNCTION [dbo].[uf_ip_2] (@in bigint)
RETURNS varchar(15) AS
BEGIN
declare @ret as char(32)
declare @val as bigint
declare @bt as char
declare @ip as varchar(15)
declare @str as char(8)
declare @i as bigint
declare @j as bigintselect @ret=''
select @val=@in
while @val > 0
begin
select @val=@in/2
select @bt=@in-@val*2
select @in=@val
select @ret=@bt+@ret
endselect @ret=substring('00000000000000000000000000000000',1,32-len(@ret))+@ret
select @i=0
select @ip=''
while @i<4
begin
select @j=0
select @str=substring(@ret,@i*8+1,8)
select @val=0
while @j<8
begin
select @val=@val+substring(@str,@j+1,1)*power(2,7-@j)
select @j=@j+1
end
if @i<3
begin
select @ip=@ip+rtrim(str(@val,3))+'.'
end
else
begin
select @ip=@ip+rtrim(str(@val,3))
end
select @i=@i+1
end return replace(@ip,' ','0')
END
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货