ITPub博客

首页 > 数据库 > 数据库开发技术 > PL/SQL vs T_SQL

PL/SQL vs T_SQL

原创 数据库开发技术 作者:houyichong 时间:2007-05-23 14:10:26 0 删除 编辑
PL/SQL vs T_SQL

Pl/sql 和 T-Sql中事务的使用方法对比

>oracle和Sqlserver的存储过程里面使用事务是不同的
Sqlserver里面是用的Begin trans ...commit/rollback
oracle里面用的是
savepoint ... commit/rollback to savepoint ;
或者... commit/rollback

oralle一般都使用try catch结构,在catch里面rollback

表 employee和employeeA的字段ID上建立了主键

>例子1:
[效果:]和Sqlserver的
set xact_abort on


>oracle和Sqlserver的存储过程里面使用事务是不同的
Sqlserver里面是用的Begin trans ...commit/rollback
oracle里面用的是
savepoint ... commit/rollback to savepoint ;
或者... commit/rollback

oralle一般都使用try catch结构,在catch里面rollback

表 employee和employeeA的字段ID上建立了主键

>例子1:
[效果:]和Sqlserver的
set xact_abort on
begin tran
...
commit tran

--//语句如下
begin
insert into employee
select 4,'heihei',6,'123412342' from dual;
update employeeA set Age=12 where id=3;
commit;
exception when others then
rollback;
dbms_output.put_line(Sqlerrm);
end;

[注意:] oracle里面的错误信息是通过Sqlerrm变量反映出来,
让语句不往下执行,使用return语句

>例子2:
[效果:]和Sqlserver的
begin tran
...
if @@error >0
begin
rollback tran
return;
end
...
commit tran

如果要对指定dml语句检测的话,就要改成下面的,即对没一个块进行检测
begin
begin
insert into employee
select 4,'heihei',6,'123412342' from dual;
update employeeA set age=9 where id=3;
exception when others then
rollback;
dbms_output.put_line('里层'||Sqlerrm);
return;
end;

begin
insert into employeeA
select 4,'heihei',6,'123412342' from dual;
exception when others then
rollback;
dbms_output.put_line('里层'||Sqlerrm);
return;
end;
commit;
end;

MSSQL和MYSQL都使用top关键字来显示前x条记录
而ORACLE是使用RowNum进行的,例如:
选取前10条记录
select * from TBL where RowNum<11;
不过听闻MSSQL2005也支持类似RowNum的风格;当然了简单灵活啊.
[@more@]

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

上一篇: 分区表
下一篇: MSSQL锁机制
请登录后发表评论 登录
全部评论
  • 博文量
    5
  • 访问量
    18534