if oracle sqlserver,oracle函数如何转换为sqlserver函数?

oracle函数代码:

CREATE FUNCTION [test].[GETWORKORDERID] (numberPre varchar2)

return varchar2 is

PRAGMA AUTONOMOUS_TRANSACTION;

findId number(8); --最大id

nowNumber varchar2(50);

n_count number(8);

n_count2 number(8);

nowNumber2 varchar2(50);

begin

nowNumber := to_char(sysdate, 'yyyymmdd');

nowNumber2 := to_char(sysdate - 1, 'yyyymmdd');

select count(1)

into n_count2

from user_sequences t

where t.sequence_name = 'SEQ_' || numberPre || '_' || nowNumber2;

if n_count2 > 0 then

execute immediate 'drop sequence SEQ_' || numberPre || '_' ||

nowNumber2;

end if;

select count(1)

into n_count

from user_sequences t

where t.sequence_name = 'SEQ_' || numberPre || '_' || nowNumber;

if n_count = 0 then

execute immediate 'create sequence SEQ_' || numberPre || '_' ||

nowNumber ||

' minvalue 10000 maxvalue 99999999 start with 10000 increment by 1 NOCYCLE NOCACHE';

end if;

execute immediate 'select SEQ_' || numberPre || '_' || nowNumber ||

'.nextval from dual'

into findId;

commit;

return numberPre || nowNumber || findId;

end;

转换为sqlserver代码:

CREATE FUNCTION [ZZC-CSR].[GETWORKORDERID] (@numberPre nvarchar(max))

returns table

as

begin

DECLARE @findId bigint;

DECLARE @nowNumber bigint;

DECLARE @n_count bigint;

DECLARE @n_count2 bigint;

DECLARE @nowNumber2 bigint;

DECLARE @sql1 nvarchar(max);

DECLARE @sql2 nvarchar(max);

DECLARE @sql3 nvarchar(max);

DECLARE @sql4 nvarchar(max);

DECLARE @result nvarchar(max);

set @nowNumber=convert(varchar(30),getdate() ,20)

set @nowNumber2=convert(varchar(30),getdate() ,20)

select count(1)

into n_count2

from user_sequences t

where t.sequence_name = 'SEQ_' + numberPre + '_' + nowNumber2;

if n_count2 > 0 begin

set @sql1= 'drop sequence SEQ_' + numberPre + '_' + nowNumber2;

execute (@sql1)

end ;

select count(1)

into n_count

from user_sequences t

where t.sequence_name = 'SEQ_' + @numberPre + '_' + @nowNumber;

if n_count = 0 begin

set @sql2='create sequence SEQ_ ' + @numberPre + '_' + @nowNumber +

' minvalue 10000 maxvalue 99999999 start with 10000 increment by 1 NOCYCLE NOCACHE';

execute (@sql2)

end ;

set @sql3='select SEQ_ ' + @numberPre + '_' + @nowNumber + '.NEXT VALUE FOR user_sequences';

set @findId=@sql3;

set @sql4=@numberPre + @nowNumber + @findId;

insert into @result exec (@sql4)

end;

报错信息:消息 102,级别 15,状态 31,过程 GETWORKORDERID,行 43 [批起始行 0]

“BEGIN”附近有语法错误。

不知道哪里有错误了?

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值