sql server和oracle的区别

本文对比了Oracle和SQL在标签定义、空值处理、语句结束符等方面的差异,并详细介绍了两者在事务处理、赋值方式、CURSOR使用、参数传递、异常处理等方面的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、标签的定义:oracle是<>,sql 是label:
2、空串和null:''在oracle中可以理解和null没有区别,sql是有区别的;null在oracle中和字符串连接返回字符串,sql返回null(见参数CONCAT_NULL_YIELDS_NULL)
3、语句的结束符:oracle是分号或者/,sql可以是分号也可以不使用
4、大小写敏感性:oracle对表的定义等是大小写不敏感的(除了用双引号之外),对字符串是敏感的,sql是需要根据排序规则确定是否敏感
5、事务:oracle在dml操作之后需要commit或者rollback,sql不需要。sql的事务控制是使用BEGIN TRAN/TRANSACTION和COMMIT/ROLLBACK TRAN/TRANSACTION|[WORK]。
6、赋值:oracle使用:=,sql使用=,且需要加set关键字。
   select赋值:oracle是用into,sql是@var=xxx;当查询无数据或多于一条数据时,oracle报错,sql不报错,对于无数据返回初始值,对于多条数据时循环赋值。
7、if判断:oracle是if..then..else..end if,sql是if..begin..end else..,sql有if exists的写法
8、CURSOR的使用:oracle是cursor v_cur is select ...,最后close cur;sql是DECLARE sql_cursor(此处的变量不能用@开头) CURSOR FOR SELECT ...,最后close并且DEALLOCATE,
   sql中cursor变量的赋值是set @cur = cursor for select ...。
   sql中cursor 数据类型只能用于 OUTPUT 参数,必须同时指定 VARYING 和 OUTPUT 关键字。
9、过程的参数:oracle是in/out,写在数据类型之前,sql是output,写在数据类型之后,且在调用时也需要显式指定而不仅是在过程定义时。
   oracle参数不需要指定长度,sql需要,否则默认是1(varchar)或者18(numeric),包括返回值也是一样。
   oracle入参不能修改,sql可以修改。
23、过程/函数:结构:oracle必须有begin..end,sql的过程可以不使用,但函数必须有(标量函数和多语句表值函数,内联表值函数不能有)
    sql中存储过程可以省略带默认值的参数,而函数则不行,必须指定DEFAULT关键字来代替。
    ORACLE的过程可以有return,但其后不能跟表达式;sql的过程可以有return,且可以跟表达式,不显式指定返回值时,执行成功返回0,失败返回1(即使显式指定)
10、异常处理:oracle是用exception,sql是用@@error或者try...catch(begin try ... end try begin catch ... end catch)
   在不捕获异常的情况下,oracle不会继续往下执行后面的语句,sql会

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8367589/viewspace-730091/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8367589/viewspace-730091/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值