一、SQL Server vs Oracle 简单语法比较
此为本人将 ORACLE 函数和存储过程转换为 SQL SERVER 遇到的一些语法问题的经验总结,肯定不能包括所有的语法不同点。
注: 简单的语法异同
1、SQL SERVER 变量 必须以@开头。
2、SQL SERVER 语句后不需要写分号结束符。
3、oracle 变量类型 number 可以修改为 sql server 的 decimal
4、oracle 变量类型 varchar2 可以修改为 sql server 的 varchar
5、SQL SERVER 定义变量 及传递参数,最好加上参数大小数值,例如:varchar(50)
5、SQL SERVER 不能用 ROWID, ROWNUM (但可以用 TOP 代替)
6、oracle 里的 nvl 函数,在 SQL SERVER 里使用 ISNULL 函数取代
7、SQL SERVER 自定义函数不允许修改全局表数据(只允许修改自定义函数范围内表数据), 所以发生表修改的 最好用存储过程实现而非函数。
1 create 函数或存储过程异同点
Oracle 创建函数或存储过程 一般是 create or replace ……
SQL SERVER 则是在创建之前加一条语句,先判断是否已经存在,如果存在删除已有的函数或存储过程。
函数语句
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[函数名]
GO
存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[存储过程名]
GO
2 结构异同点
ORACLE
1
评论11
最新资源