oracle存储过程转换为sql server

问题描述

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 (只能传 12 其他值都非法 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||'] 只允许12');
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(AUDITRLT0)=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(AUDITRLT0)=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_USERIDr.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(AUDITRLT0)=0 AND CREATERID=P_USERID AND

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

解决方案

根据语法差异,另存为然后修改下,能编译过就通了

解决方案二:
一.??? 多表连接查询更新存储过程Sql存储过程ALTER PROCEDURE [dbo].[ GetEvent]??? @SCSWId nvarchar(20)= null ??? @ToDate DATETIME??? @FromDate DATETIME AS&nb......
答案就在这里:Oracle和SQL Server存储过程的不同

时间: 2024-09-14 09:07:14

oracle存储过程转换为sql server的相关文章

oracle 存储过程和SQL Server存储过程差异大么?

问题描述 有SQL SERVER的存储过程视频推荐不?我之前学过ORACLE的,对SQL SERVER不熟悉.希望得到大家的帮助O(∩_∩)O谢谢 解决方案 其实目前各种数据库,没有统一的标准,很麻烦.mysql.sqlserver.oracle各有各的写法(主要是在sql语法上),特别是在数据库移植的时候.其实网上资料一大堆,你百度下就找到学习的教程了.找了两个不错的,供你参考:http://wenku.baidu.com/view/8bf2ed2458fb770bf78a55b9.htmlh

从Oracle迁移到SQL Server的陷阱

在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注意到的问题.我们知道,T-SQL是SQL Server的语言引擎,而Oracle的语言引擎却是PLSQL.这两种查询语言都对ANSI SQL-92标准进行了扩展以提供额外的支持力度.你所创建的应用程序几乎都要用到这些补充特性.本文就对最常用的.非标准的Oracle扩展进行了说明,同时还要介绍下如何对这些扩展进行转化以用在SQL Server环境下. 列的选择 用PLSQL执行数据查询的时候,FROM子句是必须的,这同SQL

对比Oracle临时表和SQL Server临时表的不同点_oracle

Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助. 1.简介 Oracle数据库除了可以保存永久表外,还可以建立临时表temporary tables.这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据.当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字

JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server - 1.1版本

js|odbc|server|存储过程|数据|数据库 <%--作者:何志强[hhzqq@21cn.com]日期:2000-08-04 2000-08-16版本:1.1功能:JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server SQL Server的存储过程如下:    create procedure sp_jsptest       @yourname  varchar(50),       @myname varchar(50) output    as   

ASP调用存储过程访问SQL Server

server|存储过程|访问     ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过.我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回事.对于简单的应用,这些资料也许是有帮助的,但仅限于此,因为它们根本就是千篇一律,互相抄袭,稍微复杂点的应用,就全都语焉不详了.     现在,我基本上通过调用存储过程访问SQL Server,以下的文字虽不敢保证绝对正确,但都是实践的总结,希望对大家能有帮助.      存储过程就是作

sql server 2005分页存储过程和sql server 2000分页存储过程

 sql server 2005分页存储过程和sql server 2000分页存储过程,sql 2005的分页存储过程分3个版本,一个是没有优化过的,一个是优化过的,最后一个支持jion的,sql2000的分页存储过程,也可以运行在sql2005上,但是性能没有sql2005的版本好. USE [svnhost] GO /****** 对象:  StoredProcedure [dbo].[up_Page2005]    脚本日期: 05/21/2008 11:27:05 ******/ SE

asp.net Excel转换为SQL Server的方法_实用技巧

1.功能分析 通过Microsoft.Jet.OLEDB.4.0方式可实现使用ADO.NET访问Excel的目的,如以下示例代码为连接Excel数据的字符串: 复制代码 代码如下: string strOdbcCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\2010年图书销售情况.xls;Extended Properties=Excel 8.0"; 2.实施方法 程

从Oracle数据库到SQL Server数据库主键的迁移

oracle|server|数据|数据库 由于项目需要要将以前Oracle的数据库转化为SQL Server,今天利用SQL Server的DTD进行数据库的迁移,但导入以后发现只导入了表结构和数据,而表的一些主键约束都没导过来,感觉很郁闷,而手头又没有好的迁移工具,如Erwin,所以动手写了个小工具,基本实现了主键的转移,主要代码如下:主要控件:     ADOConnOrcale: TADOConnection;  //连接Oracle    ADOConnSQLServer: TADOCo

Oracle数据库与SQL Server数据库镜像对比

数据库镜像是将数据库事务处理从一个数据库移动到不同环境中的另一个数据库中.镜像的拷贝是一个备用的拷贝,不能直接访问,它只用在错误恢复的情况下.Oracle数据库与MSSQL数据操作上有很大的不同,但是,在镜像操作方面有类比的地方.这篇文章关于MSSQL数据库镜像在Oracle数据库中是如何实现的,它们之间存在哪些差异呢. 首先,微软SQL数据库中的镜像数据库类似于Oracle数据库中的备用数据库.我说的只是类似,确切的说,我们需要考虑不同数据库在自己体系中的差异.MSSQL作为一个实例来操作,一