博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)C#中调用ORACLE的PACKAGE里方法和存储过程的应用
阅读量:6432 次
发布时间:2019-06-23

本文共 2240 字,大约阅读时间需要 7 分钟。

转自

下面列举如何在C#中调用ORACLE的PACKAGE的东西,主要包括PACKAGE的方法和存储过程
一,首先在ORACLE里建立如下PACKAGE
PACKAGE分SPEC和body两部分.
1.SPEC是声明部分.
CREATE
OR
REPLACE
PACKAGE
FirstPage
is
type outlist
is
ref
cursor
;
Procedure
p_get(
maxrow
in
number
, minrow
in
number
, return_list
out outlist );
function
f_get(
str
in
varchar2
)
return
varchar2
;
END
FirstPage;
/
2.BODY是功能实现部分
CREATE
OR
REPLACE
package body
FirstPage
is
Procedure
p_get(
maxrow
in
number
, minrow
in
number
, return_list
out outlist )
is
begin
open
return_list
for
select
*
from
(
select
a.
*
,rownum rnum
from
IPS_WL_INNOLUXPN a
where
rownum
<=
maxrow)
where
rnum
>=
minrow;
end
;
Function
f_get(
str
in
varchar2
)
return
varchar2
is
str_temp
varchar2
(
200
) :
=
'
Good Luck!
'
;
begin
str_temp
:
=
str_temp
||
str
;
return
str_temp;
end
f_get;
end
FirstPage;
/
以上,就在ORACLE里面建立了一个名字叫FIRSTPAGE的PACKAGE,这个PACKAGE里面有一个名叫P_GET的存储过程,它有3个参数,一个是maxrow,minrow是输入,result_list是个CURSOR,用来存放传回的数据集
二.C#部分代码:
string
connStr
=
"
Data
Source=E4MT;user id=mnt;password=mnt
"
;
OracleConnection orcn
=
new
OracleConnection(connStr);
//
C#
調用Package中的Function
OracleCommand cmd
=
new
OracleCommand(
"
FIRSTPAGE.f_get
"
,orcn);
cmd.CommandType
=
CommandType.StoredProcedure;
OracleParameter p1
=
new
OracleParameter(
"
str
"
,OracleType.VarChar,
10
);
p1.Direction
=
ParameterDirection.Input;
p1.Value
=
"
Andy
"
;
OracleParameter
p2
=
new
OracleParameter(
"
result
"
,OracleType.VarChar,
100
);
p2.Direction
=
ParameterDirection.ReturnValue;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
orcn.Open();
cmd.ExecuteNonQuery();
orcn.Close();
//
C#調用Package中的Procedure
cmd
=
new
OracleCommand(
"
FIRSTPAGE.p_get
"
,orcn);
cmd.CommandType
=
CommandType.StoredProcedure;
p1
=
new
OracleParameter(
"
maxrow
"
,OracleType.Number);
p1.Direction
=
ParameterDirection.Input;
p1.Value
=
50
;
p2
=
new
OracleParameter(
"
minrow
"
,OracleType.Number);
p2.Direction
=
ParameterDirection.Input;
p2.Value
=
10
;
OracleParameter p3
=
new
OracleParameter(
"
return_list
"
,OracleType.Cursor);
p3.Direction
=
ParameterDirection.Output;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);
DataTable
dt
=
new
DataTable();
OracleDataAdapter da
=
new
OracleDataAdapter(cmd);
da.Fill(dt);
foreach
(DataRow row
in
dt.Rows)
{
}

转载地址:http://latga.baihongyu.com/

你可能感兴趣的文章
动态规划 简单的分割问题的解决方案钢棒
查看>>
东大OJ-1588: Routing Table
查看>>
CactiEZ 中文版V10.1安装使用以及139邮箱短信报警设置
查看>>
Xilinx发布新版SDAccel开发环境加速数据中心应用
查看>>
Oracle PLSQL Demo - 01.定义变量、打印信息
查看>>
把图片生成Base64字符串
查看>>
突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区
查看>>
花生壳宣布网站的网址直接绑定到详细的项目——jboss版本
查看>>
问题-[Delphi]在对GRID设置单击为编辑时,其他GRID可以,但有一个GRID不行?
查看>>
[Java IO]06_JSON操作
查看>>
转: 软件版本号的命名
查看>>
BZOJ 2588 Count on a tree (COT) 是持久的段树
查看>>
unity, unlit surface shader (texColor only surface shader)
查看>>
STL中的set容器的一点总结(转)
查看>>
在线最优化求解(Online Optimization)之三:FOBOS
查看>>
unity, sprite atlas
查看>>
[CareerCup] 4.8 Contain Tree 包含树
查看>>
HDU 4946 Area of Mushroom 凸包
查看>>
nginx 编译选项
查看>>
android TextView 带滚动条,和ScrollView 用法(暂时觉得ScrollView滑动速度比较快)...
查看>>