oracle怎么传参,c# 用OracleParameter[]方法传参数很郁闷

满意答案

00e27ab806e4881f8254fe7ae8741834.png

yuliuxing

推荐于 2016.03.21

00e27ab806e4881f8254fe7ae8741834.png

采纳率:50%    等级:10

已帮助:1072人

下面解法引用自:http://blog.sina.com.cn/s/blog_4c81e6230100iy1h.html

C# 获取 oracle 存储过程的 返回值(2010-06-09 00:30:37)

存储过程

CREATE OR REPLACE PROCEDURE ADMIN.INSERT_OBJ (

OBJEFIRT_parms IN NVARCHAR2,

OBJEDATT_parms IN NVARCHAR2,

OBJESECT_parms IN NVARCHAR2,

OBJECONTENT_parms IN NVARCHAR2,

ISRELEASE_parms IN INTEGER,

OBJECODE_parms IN NVARCHAR2,

TAGS_parms IN NVARCHAR2,

OBJ_ID_parms OUT INTEGER

)

IS

BEGIN

INSERT INTO ADMIN.CB_OBJECT (OBJEID,

OBJEFIRT,

OBJEDATT,

OBJESECT,

OBJECONTENT,

ISRELEASE,

OBJECODE,

TAGS)

VALUES (ADMIN.CYANBIRD.NEXTVAL,

OBJEFIRT_parms,

TO_DATE (OBJEDATT_parms, 'YYYY-MM-DD hh24:mi:ss'),

OBJESECT_parms,

OBJECONTENT_parms,

ISRELEASE_parms,

OBJECODE_parms,

TAGS_parms)

RETURN OBJEID INTO OBJ_ID_parms;

RETURN;

EXCEPTION

WHEN NO_DATA_FOUND

THEN

NULL;

WHEN OTHERS

THEN

-- Consider logging the error and then re-raise

RAISE;

END INSERT_OBJ;

//C#中获取值

DbParameter[] paras = new OracleParameter[8];

paras[0] = new OracleParameter("OBJEFIRT_parms", OracleType.NVarChar);

paras[0].Value = cbinf.ObjeFirT;

paras[1] = new OracleParameter("OBJEDATT_parms", OracleType.NVarChar);

paras[1].Value=cbinf.ObjeDatT.ToString();

paras[2]= new OracleParameter("OBJESECT_parms",OracleType.NVarChar);

paras[2].Value = cbinf.ObjeSecT;

paras[3] = new OracleParameter("OBJECONTENT_parms", OracleType.NVarChar);

paras[3].Value = cbinf.ObjeContent;

paras[4] = new OracleParameter("ISRELEASE_parms", OracleType.Int32);

paras[4].Value = cbinf.IsRelease;

paras[5] = new OracleParameter("OBJECODE_parms", OracleType.NVarChar);

paras[5].Value = cbinf.ObjeCode;

paras[6] = new OracleParameter("TAGS_parms", OracleType.NVarChar);

paras[6].Value = cbinf.Tags;

paras[7] = new OracleParameter("OBJ_ID_parms", OracleType.Int32);

paras[7].Direction = ParameterDirection.Output;

SQLHelper.ExecuteScaler(InsertInfo_Obj, CommandType.StoredProcedure, paras);

int i=Convert.ToInt32(paras[7].Value);

return i;

另外如果要获取执行的行数,则依据Oracle的隐式参数:sql%rowcount,此参数用于记录受影响的行数,则给存储过程设置一个output的参数,用来记录这个值也可以。

这个参数的用法 select sql%rowcount into 参数 from dual

CREATE OR REPLACE PROCEDURE sp_UXXXXXX

(

rowAffected out number

, ......

)

IS

BEGIN

1、业务处理语句

2 select sql%rowcount into rowAffected from dual;

END;

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值