11、流程控制、循环:oracle有loop、for..loop、while..loop,sql只有while
12、动态sql:oracle是execute immediate v_sql into xxx using xxx,sql是exec (v_sql)和 exec sp_executesql
13、用select创建表:oracle是ctas,sql是select into
14、变量声明:sql变量必须以@开头(部分cursor变量除外)
15、对应关系:函数:nvl=isnull, substr=substring/left/right, rtrim<>rtrim, ltrim<>ltrim, trim=没有 to_char=>convert
sysdate=getdate(), length=len, lengthb=datalength
16、对应关系:概念:表空间=文件组,块=页(8k),区=区(8页),绑定变量=简单参数化(或自动参数化,见PARAMETERIZATION)
物化视图=索引视图
其他:set feedback n = set nocount on,comment => sp_addextendedproperty,游标变量(如%isopen)=cursor_status,
v$session=sys.dm_exec_sessions,v$lock=sys.dm_tran_locks,user_source=sys.sql_modules
dba_users=sys.syslogins,v$process=sys.sysprocesses(dm_os_tasks,dm_os_threads)
17、表定义:default和not null,oracle是default在前,sql没顺序限制;oracle中default是作为列属性,而sql是作为约束,在alter的时候语法不同
18、动态游标:oracle是open cursor for 'xxxxx',sql是@sql='declare v_cur cursor for xxxxx',exec (@sql),open v_cur。
19、子查询的别名:sql在from、merge中的using后的子查询一定要给个别名,如果子查询分多层,则每层都需要加别名,否则这个结果集不被识别。
20、临时表:sql是在需要使用时才去定义,用#(本地)或者##(全局)开头,当引用该表的用户断开连接后自动删除;oracle是先创建表,一直存在。
21、自增长:oracle使用sequence实现,sql可以定义identity列
22、sys.messages列出了错误号对应的错误信息,包括多种语言,可以和@@error联用
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8367589/viewspace-730092/,如需转载,请注明出处,否则将追究法律责任。