Oracle Functions转成Ms-Sql procedure

最近公司的一些Oracle项目要转到Ms_sql上,在把Oracle Functions改成MS-Sql的Procedure时,遇到了翻译的问题。

罗列出这些问题:

一、Oracle 基本类型

oracle mssql
varchar2 varchar
number int
number(15,2) decimal(15,2)

二、序列。

Oracle中的序列,我本来打算用自增列加一些小手段处理的,后来在同事的提醒下,才知道ms-sql2012的新特性也包含序列。

附上简单的sql语句

create sequence dbo.Sequence_voucher
as int
start with 1
Increment by 1

建一个序列,从1开始,每次加1

查看序列:select * from sys.sequences

具体测试细节,附上传送门:

http://www.cnblogs.com/CareySon/archive/2012/03/12/2391581.html

http://www.cnblogs.com/QinQouShui/p/3740707.html

三、for update。

例子:select NVL(id,-1) into v_id from student where id = 3 for update;

这个是锁表相关的用法。

  1 select * from TTable1 for update 锁定表的所有行,只能读不能写
  2 select * from TTable1 where pkid = 1 for update 只锁定pkid=1的行
  3 select * from Table1 a join Table2 b on a.pkid=b.pkid for update 锁定两个表的所有记录
  4 select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update 锁定两个表的中满足条件的行
  5. select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid 只锁定Table1中满足条件的行
  for update 是把所有的表都锁点 for update of 根据of 后表的条件锁定相对应的表
select * from emp where empno = 7369 for update; 会对表中员工编号为7369的记录进行上锁。其他用户无法对该记录进行操作,只能查询。select * from emp where empno = 7369 for update of sal; 这条语句是不是意味着只对表中的7369 这一行的sal字段的数据进行了上锁,其他数据则可以被其他用户做更新操作呢。学员测试结果为二条语句的效果是一样的。

在对多个表进行锁定时for update of才会起作用,用户1进行如下操作(of 后面可以使table1中任意字段):

select * from table1 a, table2 b where a.filed1 = b.filed1
for update of a.filed1 ;

用户2进行如下操作时可以对table2进行锁定,因为用户1只对table1进行了锁定:

select * from table2 b
for update

传送门:http://blog.csdn.net/indieinside/article/details/13296695

时间: 2024-10-05 21:26:27

Oracle Functions转成Ms-Sql procedure的相关文章

SSIS 从oracle 转数据回MS SQL

SSIS 从oracle 转数据回MS SQL,转每月的销售记录,大概15000以内,在开发机器上没问题,部署到生产环境出现各种状况“ SSIS 无法从连接伺服器的OLE DB提供者BULK 提取资料列 ”,其他表几万的记录都没有问题,将销售记录整理为视图,问题依旧.猜测是否这个表有问题,将视图中数据做排序处理,居然将问题解决了,不知那位大神可以解释一下这个是什么状况?

配置Oracle Gateway 12连接到SQL server 2014

最近的工作中需要基于Oracle连接到SQLserver2014,我们可以通过配置Gateway的方式来实现这个功能.这个Gateway的实质是透过dblink来实现的.即把SQLserver模拟成一个远端的Oracle实例,这个实例由Gateway来负责进行接收,转发等等.本文简要描述其配置过程. 一.安装环境介绍 gateway: 12.1.0.2 Oracle db: 11.2.0.4 + RHEL6.3 Sqlserver: 2014 + Win2012 如果安装在已经安装Oracle相

MS SQL 模仿ORACLE的DESC

前言: 在ORACLE数据库的SQL*PLUS里面有个DES(DESCRIBE)命令,它可以返回数据库所存储对象的描述,如下所示 SQL> DESC STUDENT_SCORE   Name Type Nullable Default Comments   ---------------- ---------- -------- ------- --------   STUDENT_NO NUMBER(10) 学号   CHINESE_SCORE NUMBER Y 语文成绩   ENGLISH_

MS SQL到Oracle的数据迁移笔记

MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能够在新系统中使用或查询.另外,新系统的实施人员并不清楚旧系统的数据结构,且两个新旧两个系统的使用的数据结构有较大的差异.为了叙述方便,将旧系统维护人员简称为A,新系统实施人员简称为B. 二.总体思路 1.  A与B根据各自了解的信息,一起制定中间表: 2.  A从MS SQL Server提取数据,

OLEDB 连接 和 效率(MS SQL 、Oracle 、ACESS)

这半年手头的一个项目,自己写代码的时候偏爱 MS SQL.部署服务器装的是 ORALCE 和 实际的现场是小型机,压根没有装数据库只好选用 ACESS ,三种环境不一致,才决定用 OLEDB 做数据库访问.之前忙于赶进度草草地封了几个增删改查的操作,年前闲下来做测试还发现了不少问题.趁着这几天闲就从头封装了一次,做出单独的一个简单类出来. 为了调用的时候传递方便就直接从 IDbCommand 继承过来,这样传参还是调用都留下了余地,封装很简单直接上类图 本文的小工具和封装类,已经提交到了GIT

iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】

iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post). Oracle设置 Xml代码   <!-- Oracle SEQUENCE --> <insert id="insertProduct-ORACLE" parameterClass="com.domain.Product"> <selectKey resultClass="int&

MS SQL Server2000转换成MySQL

按计划今天着手进行将后台数据库从MS SQL Server2000转换成MySQL5.1.3.目的是便于发布软件的测试版本. 1. 驱动: mysql-connector-odbc-5.1.11-win32.msi.测试Win7*64, XP通过. 2. MySQL_5.1.3免安装版. 3. MSS2SQL工具软件转换SQLServer2000的表结构.一共转换了43个表. 4. MSSQLServer2000中的存储过程转换到MySQL. //To-Do 5. SQL函数的区别 (1)sel

Oracle\MS SQL Server Update多表关联更新

原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表   一.MS    SQL    Server   多表关联更新      sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就

[MS SQL]含有上午or下午字符串转成DateTime之错误处理

前言 此篇文章标题实在很难下,所以我需要描述一下情境.因最近接手一个国外的Project,首先必须先将开发环境建置起来,但有关日期的程序写法,都是在C#将Datetime直接ToString,然后这个string直接丢到SP去处理,正式环境都跑得好好的,测试环境在DB就发生了日期转型错误的Exception. 还原&调试 在C#里,会产生出类似这种string,Response的结果会是2013/5/25 上午 00:21:25这种格式 之后这个string,会丢到SP做一些处理,这种格式就会发