oracle包和存储过程使用

2013-02-22

oracle的存储过程要放包里才能调用

首先定义包头

create or replace package PKG_ORDER as
type CUR_ORDER is ref cursor;
Procedure PROC_TAKE_OUT_ORDER( --订单提取存储过程
P_SORT_RULE varchar2, --SQL规则
P_CUR_ORDER out CUR_ORDER); --结果集
end PKG_ORDER;

然后定义包体

CREATE OR REPLACE Package Body PKG_ORDER
Is
--存储过程
Procedure PROC_TAKE_OUT_ORDER(
P_SORT_RULE varchar2, --SQL规则
P_CUR_ORDER out CUR_ORDER --输出结果集
)
is
v_count_sql varchar2(2000);
v_select_sql varchar2(2000);
begin
--查询总条数

open P_CUR_ORDER for 'select * from pm_strategy_detail';


end PROC_TAKE_OUT_ORDER;
end PKG_ORDER;

直接调用方法

DECLARE
v_cur PKG_ORDER.CUR_ORDER;
BEGIN
PKG_ORDER.PROC_TAKE_OUT_ORDER('',v_cur);
END;

C#调用

//此处参数和存储过程里的要一致
OracleParameter[] parameters = {
DBHelper.MakeInParam("P_SORT_RULE",OracleType.VarChar, ""),
DBHelper.MakeOutParam("P_CUR_ORDER",OracleType.Cursor,0)
};

var dt= DBHelper.ExecuteDataset(CommandType.StoredProcedure, "PKG_ORDER.PROC_TAKE_OUT_ORDER", parameters).Tables[0];

作者:robotbird, 分类:关于代码 标签: oracle 数据库 , 浏览(2942), 评论(0)
上一篇: oracle的游标操作
下一篇: 从今天开始坚持不刷技术类文章

相关文章

(0)条评论 订阅

发表评论

电子邮件用于回复通知和avatar全球唯一头像 *

*