oracle切换sqlserver,ORACLE语法转换成sqlserver,该如何解决

ORACLE语法转换成sqlserver

小弟在 ORACLE写了一个小函数,但是在sqlserver里执行不了,小弟不怎么懂得sqlserver的语法,大家帮忙看看,给指正指正

CREATE OR REPLACE FUNCTION get_endyear(as_year varchar2)

RETURN varchar2

AS

v_year varchar2(4);

BEGIN

select case when '2DB494F6CA4140BA9C2BF87BEEBAC16A'=as_year then  '2017'

else  getyear end into v_year from dual;

return v_year;

END;

------解决方案--------------------

--楼主你oracle的函数就有语法错误啊

CREATE OR REPLACE FUNCTION get_endyear(as_year varchar2)

RETURN varchar2

AS

v_year varchar2(4);

BEGIN

select case when '2DB494F6CA4140BA9C2BF87BEEBAC16A'=as_year then  '2017'

else  to_char(sysdate,'yyyy')   end into v_year from dual;

return v_year;

END;

Select stal.get_endyear('ABC') from dual

--

2014

------解决方案--------------------

create  FUNCTION [dbo].test

(

@v_year varchar(20)

)

RETURNS char(20)

AS

BEGIN

declare @r varchar(20)

if( @v_year='2DB494F6CA4140BA9C2BF87BEEBAC16A' )

set @r='2017'

else

set @r = Year(getdate())

return @r

END

select dbo.test('ABC')

--------------------

2014

(1 行受影响)

------解决方案--------------------

引用:create  FUNCTION [dbo].test

(

@v_year varchar(20)

)

RETURNS char(20)

AS

BEGIN

declare @r varchar(20)

if( @v_year='2DB494F6CA4140BA9C2BF87BEEBAC16A' )

set @r='2017'

else

set @r = Year(getdate())

return @r

END

select dbo.test('ABC')

--------------------

2014

(1 行受影响)

22132478.gif

------解决方案--------------------

引用:--楼主你oracle的函数就有语法错误啊

CREATE OR REPLACE FUNCTION get_endyear(as_year varchar2)

RETURN varchar2

AS

v_year varchar2(4);

BEGIN

select case when '2DB494F6CA4140BA9C2BF87BEEBAC16A'=as_year then  '2017'

else  to_char(sysdate,'yyyy')   end into v_year from dual;

return v_year;

END;

Select stal.get_endyear('ABC') from dual

--

2014

正解啊

------解决方案--------------------

use tempdb

go

/*

CREATE OR REPLACE FUNCTION get_endyear(as_year varchar2)

RETURN varchar2

AS

v_year varchar2(4);

BEGIN

select case when '2DB494F6CA4140BA9C2BF87BEEBAC16A'=as_year then  '2017'

else  getyear end into v_year from dual;

return v_year;

END;

*/

go

--轉換成SQL Server

if object_id('get_endyear') Is not null

Drop function get_endyear

Go

create function get_endyear

(

@as_year nvarchar(50)

)

returns varchar(4)

as

begin

return(case @as_year when '2DB494F6CA4140BA9C2BF87BEEBAC16A' then '2017' else rtrim(year(getdate())) end)

end

go

--調用

select dbo.get_endyear('1')

select dbo.get_endyear('2DB494F6CA4140BA9C2BF87BEEBAC16A')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值