skyjry 2015-12-21 04:45 采纳率: 0%
浏览 1495

oracle存储过程转换为sql server

create or replace procedure WF_USERAUD(
P_USERID IN VARCHAR2,
P_ROLES IN VARCHAR2,
P_GUANLBMS IN VARCHAR2,
P_ISPASSED INT
) AS
/*------------------------------------------------------------------------------
功能描述:用户审核存储过程.
参数:
P_USERID 用户ID(昵称)
P_ROLES 所属职位(格式 角色id1,角色id2,角色id3 )
P_GUANLBMS 所管理的部门(格式 部门id1,部门id2,部门id3,
P_ISPASSED (只能传 1,2 其他值都非法 1:审核通过,2.审核驳回)
v_count int;
begin
IF P_USERID IS NULL THEN
RAISE_APPLICATION_ERROR(-20004, '非法的参数P_USERID值不允许为空值['||P_USERID||']');
END IF;
IF P_ISPASSED IS NULL THEN
RAISE_APPLICATION_ERROR(-20005, '非法的参数P_ISPASSED值['||P_USERID||']');
END IF;

IF P_ISPASSED2 THEN
RAISE_APPLICATION_ERROR(-20001, '非法的参数ISPASSED值['||P_ISPASSED||'] 只允许1,2');
END IF;

--如果驳回,则设置用户被驳回,并退出
IF P_ISPASSED=2 THEN
--直接删除,2015-9-9,jason
DELETE FROM CORE_USER WHERE RWID=P_USERID;
DELETE FROM CORE_WF_DONE WHERE NVL(AUDITRLT,0)=0 AND CREATERID=P_USERID AND

DEFID='F67169924BE5498FBC337C83C84FAAC7';
COMMIT;
RETURN;
--UPDATE CORE_USER SET ISPASSED=P_ISPASSED WHERE RWID=P_USERID;
--UPDATE CORE_WF_DONE SET AUDITRLT=P_ISPASSED WHERE NVL(AUDITRLT,0)=0 AND CREATERID=P_USERID AND

DEFID='F67169924BE5498FBC337C83C84FAAC7';
--return;
END IF;

v_count:=0;
SELECT COUNT(*) INTO v_count FROM
table(CORE_SPLIT(P_ROLES,',')) A
where not exists(
SELECT 1 FROM CORE_ROLE B
where B.RWID = A.column_value);
if(v_count>0) then
RAISE_APPLICATION_ERROR(-20003, '角色(所属职责)['||P_ROLES||']存在非法的角色id');
end if;

--角色\管理的部门被修改了 删除掉原来的
DELETE CORE_USERDEPT WHERE USERID=P_USERID;

--添加用户部门角色关系表CORE_USERDEPT
INSERT INTO CORE_USERDEPT(Userid, Roleid, Deptid)
SELECT distinct P_USERID,r.COLUMN_VALUE, d.COLUMN_VALUE FROM
table(CORE_SPLIT(P_ROLES,',')) r, table(CORE_SPLIT(P_GUANLBMS,',')) d;

--更新用户表
UPDATE CORE_USER SET ISPASSED=P_ISPASSED WHERE RWID=P_USERID;
UPDATE CORE_WF_DONE SET AUDITRLT=P_ISPASSED WHERE NVL(AUDITRLT,0)=0 AND CREATERID=P_USERID AND

DEFID='F67169924BE5498FBC337C83C84FAAC7';
COMMIT;
end WF_USERAUD;
/

  • 写回答

2条回答 默认 最新

  • Robot-C 2015-12-21 04:53
    关注

    一.    多表连接查询,更新存储过程Sql存储过程ALTER PROCEDURE [dbo].[ GetEvent]    @SCSWId nvarchar(20)= null ,    @ToDate DATETIME,    @FromDate DATETIME AS&nb......
    答案就在这里:Oracle和SQL Server存储过程的不同
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog