我有一个包含大量存储过程的SQL Server 2000数据库。我想迁移到一个开源数据库,我知道我将不得不重新编写程序,但我希望尽可能少地完成这项工作
答案 0 :(得分:5)
两者都不是直接端口,但两者之间 - MySQL的语法更类似于SQL Server而不是PostgreSQL。
SQL Server 2000没有分析/排名/窗口功能 - 当前MySQL也没有。此外,没有WITH / CTE支持 - 再次,MySQL也不支持这一点。如果你正在从SQL Server 2005+迁移,我会推荐PostgreSQL 8.4+,因为我刚才提到过两件事。
答案 1 :(得分:1)
MySQL的存储过程实际上是基本的,例如你不能从proc中引发异常,这使得错误处理真的非常痛苦。此外,调试存储过程是一种痛苦,错误消息不清楚,语言本身非常有限。
Postgres对此更为成熟;如果你的应用程序有很多存储过程,这几乎排除了mysql。
答案 2 :(得分:0)
MySQL支持存储过程本身; PostgreSQL支持存储的函数,实际上它们非常相似。 PostgreSQL的第一个查询语言PL / pgSQL类似于Oracle的PL / SQL。 PostgreSQL支持SQL:2003 PSM存储过程以及许多其他通用编程语言,如Perl(PL / Perl),Python(PL / Python),TCL(PL / Tcl),Java(PL / Java)和C(PL) /C)。 MySQL遵循存储例程的SQL:2003语法,IBM的DB2也使用它。 -MySQL AB,MySQL 5.1参考手册:: 18存储过程和函数 通过插件接口MySQL支持Java,Perl,XML-RPC中的外部语言存储过程,其中包含更多语言插件。