Oracle 与 SQL Server 应用差异对比分析
项目
Oracle 10g SQLServer 2008
备注
存 储 过
程格式
CREATE OR REPLACE PROCEDURE 存
储过程名(参数列表) IS
Begin
---存储过程内容
End 存储过程名;
CREATE PROCEDURE 存储过程名 (参数列
表) AS
--存储过程内容
存 储 过
程参数
1、指定参数类型,但不指定长度
2、在 参 数 及 类 型 间 要 加 入 出 标 识
(IN、OUT)
Eg:
task_remark IN VARCHAR2
prm_code OUT NUMBER
1、指定参数类型,并要指定长度
2、对于出参需要在类型后面加 OUTPUT(或
OUT)
Eg:
@task_remark VARCHAR(10)
@prm_code int output
使 用 存
储过程
1、直接使用存储过程名
2、参数在存储过程后面的括号包内列出
Eg:
p_wfm_getcolumns(v_tablename,v_t
ablecolumn);
1、调用存储过程名前面需要加 exec 关键字
2、参数在存储过程后面逐个列出
3、出参后面要加关键字 output 或 out
Eg:
EXEC P_WFM_GETCOLUMNS
@tablename,@tablecolumn OUTPUT
自 定 义
函 数 格
式
CREATE OR REPLACE FUNCTION 函数
名 (参数列表)
RETURN 返回值类型 IS
BEGIN
END;
CREATE FUNCTION 函数名 (参数列表)
RETURNs 返回值类型 AS
--函数内容
自 定 义
函 数 内
容
1、指定参数类型,但不指定长度
2、在 参 数 及 类 型 间 要 加 入 出 标 识
(IN、OUT)
Eg:
task_remark IN VARCHAR2
prm_code OUT NUMBER
3、支持对数据增、删、改操作
4、支持动态 SQL 语句
1、指定参数类型,并要指定长度
2、不支持出参
Eg:
@task_remark VARCHAR(10)
3、不支持对数据增、删、改操作
4、不支持动态 SQL 语句
使 用 自
定 义 函
数
1、直接使用函数名
Eg:
V_result :=f_wfm_isandbegin(<ow_id,
step_id)
1、在函数名前面加上 dbo.
Eg:
Set @result=
dbo.f_wfm_isandbegin(@<ow_id,
@step_id)
游标 1、游标声明
DECLARE cursor 游标 名 is select
语句
2、使 用 游 标 过 程 打开 (open)->提取
(fetch)->关闭(close)
3、支持快捷使用游标,直接使用 for 循
环,数据库会自动打开、提取及关闭
游标
1、游标声明
DECLARE 游标名 cursor for select 语句
2、使 用 游 标 过 程 打 开 (open)-> 提 取
(fetch)->关闭(close)->销毁(
变量 1、变量前不可加@符号 1、变量前需要加@符号
评论0