Sybase脚本修改为oracle脚本备忘
来源:互联网 发布:淘宝付款后钱在哪里 编辑:程序博客网 时间:2024/05/16 23:02
最近有一个项目要把原来使用的Sybase数据库改为Oracle数据库, 所以我要把sybase的脚本改成oracle的脚本, 如表结构, 存储过程, 视图等的脚本. 这种改脚本的情况可能很久才能遇到一次吧, 放到blog里面, 以后需要自己再看看, 温故知新.
(所用sybase版本是11.9.2, oracle是10g)
1. if exists
用正则表达式 where id = object_id/(/'[A-Z_]+/'/)
判断表是否存在这段不要了, 直接drop table
2. go (注意要用全词匹配)
替换为 /
3. varchar (这个要提前换)
替换为 varchar2
4. text
替换为 varchar2(4000), 还不够的话可以用 clob代替
5. datetime
替换为 date, 或者 TIMESTAMP, 后者精确到毫秒
6. 创建表的脚本中不要存在空行, 不然在用命令窗口导入的时候会出现错误
在editplus中用 正则表达式 ^[ /t]*/n 替换为 空格 取消空行( ^ 为行头开始, /n 为换行符)
全部替换的按钮按多几次, 再检查下
7. dbo.
替换为空格或者用户名
8. 建立主键
CONSTRAINT PK_BDG_SDC_PRJ_ZP PRIMARY KEY CLUSTERED (ID)
中的CLUSTERED 要去掉
9. 去掉 LOCK ALLPAGES
10. getdate()
替换为 sysdate
11. isnull()
替换为 nvl()
11. 如果出现重复创建表的时候
把表上面的注释 /*********/ /****************
/* */ 改为 * *
/*********/ *****************/
原先不是很清楚, 不过通常是下面要建立的表的名称太长就会出现这种情况
12. 存储过程
A. 参数: 在存储过程名称后面(p1, p2,.....)
命名开头不能为 @ ;
要指明in 和 out ;
参数类型不能带括号部分;
B. 变量: 不用关键字 declare , 直接" t_time varchar2(20); t_seq int; "(注意要带" ; ") ;
在as 和 begin 中间定义;
给变量赋值 " varA := value; "
和" select keyA into varA from tableA; " ;
C. 在每个完整的语句后面要加 " ; ";
没有直接" return 1 ; "的, 但是可以" return; " 直接中断存储过程;
没有" begin transaction ", 但可以用" commit; "和" rollback; " (是不是每次执行都会建立隐性的事务我就不知道了);
要返回select的结果集, 必须用游标, 不过需要建立一个包A才行, 在这个包A中定义一个"type cursorType is ref cursor; "这样一个游标
类型, 然后再加一个输出参数"p_cursor out A.cursorType ", 内容里面" open p_cursor for select ......; " ;
DDL的语句必须用动态SQL, 如"v_sql:='drop table TMP_XMZ_REPORT'; EXECUTE IMMEDIATE v_sql; ";
D. 控制结构
if...else
sybase: if(条件) begin 代码块 end(如果只有一句代码, 可以不用begin end)
else begin 代码块 end(如果只有一句代码, 可以不用begin end)
oracle: if(条件) then 代码块
else 代码块 end if;
E. 游标
在sybase里面可以直接 " declare CUR1 cursor for select..... ", 这个貌似在oracle不行,
不过可以用" for cur1_record in ( select....) loop 代码块 end loop; ";
- Sybase脚本修改为oracle脚本备忘
- Sybase脚本修改为oracle脚本备忘
- Oracle常用脚本备忘
- Oracle常用脚本备忘
- oracle 数据库导入脚本备忘
- shell脚本执行sybase和执行oracle
- Oracle脚本修改表
- sybase卸载脚本
- Sybase数据库备份脚本需要Sybase环境变量
- shell脚本备忘
- shell脚本实例备忘
- Bash shell脚本备忘
- shell脚本备忘
- shell脚本备忘
- 脚本编译顺序【备忘】
- Shell 脚本(备忘)
- Linux脚本备忘
- lds 脚本分析备忘
- 利用sniffer技术捕捉SSL通信时客户端证书公钥
- android系统架构[转]
- 远程抄表系统集中器的设计与实现
- OpenAT实现DOTA
- 并行思考--三位工程师的观点
- Sybase脚本修改为oracle脚本备忘
- mysql innoDB 表的配置
- 邮件发送
- 使用BCP和SQLLDR把Sybase中的用户表的数据导到Oracle中备忘
- javascript 细节
- 整理vb各种转换
- 如何学j2ee(这段时间论坛上很多朋友问)收藏
- 2440+NAND Flash(K9F1208UOM)总结
- Office宏——打印PPT