求大神帮忙将SQL的存储过程转换成oracle的存储过程 50
createprocedure[dbo].[BC_异常处理撤销](@异常IDvarchar(6),@用户IDvarchar(5),@用户varchar(10))asdec...
create procedure [dbo].[BC_异常处理撤销](@异常ID varchar(6), @用户ID varchar(5), @用户 varchar(10)) as
declare
@状态ID varchar(3), @上状态ID varchar(3)
, @作者ID varchar(5), @作者 varchar(10), @部门ID varchar(3)
, @提交人ID varchar(5), @提交人 varchar(10), @日期 datetime
, @cnt int, @errmsg varchar(255)
begin
--提取数据供验证
select @上状态ID = t2.状态ID
, @作者ID = t.登记人ID, @作者 = t.登记人, @部门ID = t.部门ID
, @提交人ID = t.用户ID, @提交人 = t.姓名, @日期 = t.状态日期, @状态ID = t.状态ID
from VC_异常处理_M t
left join TCSS_异常处理状态 t2 on t.状态ID = t2.下状态ID
where t.异常ID = @异常ID
--未找到数据
if @@rowcount = 0 begin
set @errmsg = '异常数据未找到!' + dbo.FS_ENTER() + '异常ID:【' + @异常ID + '】'
goto warning
end else if @@rowcount > 1 begin
set @errmsg = '异常处理工作流定义错误,根据当前状态找到多个重复的上状态!'
goto warning
end
--判断是否为作者首次提交操作,仅能提交本人的数据
if @提交人ID is not null begin
if @用户ID <> @提交人ID begin
set @errmsg = '您不能撤销【' + ISNULL(@提交人, '') + '】提交的数据!'
goto warning
end
--此处处理由于退回造成的编辑状态,而非初始编辑状态,则设置为作废状态(因为有过程记录,所以不建议删除)
if @状态ID = dbo.FCSS_异常状态_编制() begin
insert into TC_异常处理过程(异常ID, 状态ID, 日期, 用户ID, 姓名, 结果ID, 说明, 回退标志, 中断完成, 等待时间)
values(@异常ID, dbo.FCSS_异常状态_作废(), getdate(), @用户ID, @用户, null, '作废', 1, 0, dbo.FS_时差(@部门ID, @日期, getdate()))
return
end
end else begin
if @用户ID <> @作者ID begin
set @errmsg = '您不能删除【' + ISNULL(@作者, '') + '】录入的数据!'
goto warning
end
delete from TC_异常处理
where 异常ID = @异常ID
return
end
--开始数据处理
delete from TC_异常处理过程
where 异常ID = @异常ID
and 日期 = @日期
return
warning:
Exec PS_异常抛出 @errmsg
end
有闲着没事的可以加我企鹅174919972 悬赏可以提高到200 谢谢 展开
declare
@状态ID varchar(3), @上状态ID varchar(3)
, @作者ID varchar(5), @作者 varchar(10), @部门ID varchar(3)
, @提交人ID varchar(5), @提交人 varchar(10), @日期 datetime
, @cnt int, @errmsg varchar(255)
begin
--提取数据供验证
select @上状态ID = t2.状态ID
, @作者ID = t.登记人ID, @作者 = t.登记人, @部门ID = t.部门ID
, @提交人ID = t.用户ID, @提交人 = t.姓名, @日期 = t.状态日期, @状态ID = t.状态ID
from VC_异常处理_M t
left join TCSS_异常处理状态 t2 on t.状态ID = t2.下状态ID
where t.异常ID = @异常ID
--未找到数据
if @@rowcount = 0 begin
set @errmsg = '异常数据未找到!' + dbo.FS_ENTER() + '异常ID:【' + @异常ID + '】'
goto warning
end else if @@rowcount > 1 begin
set @errmsg = '异常处理工作流定义错误,根据当前状态找到多个重复的上状态!'
goto warning
end
--判断是否为作者首次提交操作,仅能提交本人的数据
if @提交人ID is not null begin
if @用户ID <> @提交人ID begin
set @errmsg = '您不能撤销【' + ISNULL(@提交人, '') + '】提交的数据!'
goto warning
end
--此处处理由于退回造成的编辑状态,而非初始编辑状态,则设置为作废状态(因为有过程记录,所以不建议删除)
if @状态ID = dbo.FCSS_异常状态_编制() begin
insert into TC_异常处理过程(异常ID, 状态ID, 日期, 用户ID, 姓名, 结果ID, 说明, 回退标志, 中断完成, 等待时间)
values(@异常ID, dbo.FCSS_异常状态_作废(), getdate(), @用户ID, @用户, null, '作废', 1, 0, dbo.FS_时差(@部门ID, @日期, getdate()))
return
end
end else begin
if @用户ID <> @作者ID begin
set @errmsg = '您不能删除【' + ISNULL(@作者, '') + '】录入的数据!'
goto warning
end
delete from TC_异常处理
where 异常ID = @异常ID
return
end
--开始数据处理
delete from TC_异常处理过程
where 异常ID = @异常ID
and 日期 = @日期
return
warning:
Exec PS_异常抛出 @errmsg
end
有闲着没事的可以加我企鹅174919972 悬赏可以提高到200 谢谢 展开
1个回答
展开全部
居然还有那么多Goto语句:(
追问
这都是比较短的了。拿到正确的好比对着改别的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询