Oracle 带输入输出参数的存储过程 并且在C#调用 用输出参数返回。

表xiaoming;表xiaoli我想做一个存储过程实现转账功能,必须用到(in,out,inout)参数。并且调用执行成功。为什么我要用in,out,inout)参数。... 表xiaoming;表xiaoli 我想做一个存储过程实现转账功能,必须用到(in,out ,in out)参数。并且调用 执行成功。为什么我要用in,out ,in out)参数。
因为我想做一个C#调用Oracle存储过程,我想用 in out返回查询到的结果集。
balanceid ID
balancenam 姓名
balance 金额
1:不要复制的。
2:不要其他例子,只要根据这两表的。
3:最好有C#调用存储过程的实例。
附加问题:in out 参数是自定义的 create TYPE 参数名 IS ref cursor这样对吗?
展开
 我来答
windvally3
2013-07-16 · TA获得超过1290个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:127万
展开全部

TYPE typecur IS REF CURSOR 要这样写。

procedure Select_xiaoming(vbalanceid  in integer,vbalancenam in VARCHAR2, p_xiaoming out typecur) is
  begin
    open p_xiaoming for 
    select t.* from xiaoming t
       where t.balanceid  = vbalanceid
       and t.balancenam = vbalancenam;
  end Select_xiaoming;

     

更多追问追答
追问
TYPE typecur IS REF CURSOR 这样写报错无效的SQL语句 只有前面加 create才行。
而且创建的存储过程又错。存储过程是不是只能做查询?
怎么执行存储过程? call Select_xiaoming()? 怎么带参数
追答
你先在Packages目录下创建一个包,包名随便写。

CREATE OR REPLACE PACKAGE pk_XXXXXX AS
TYPE typecur IS REF CURSOR;

procedure Select_xiaoming(vbalanceid in integer,vbalancenam in VARCHAR2, p_xiaoming out typecur);

END pk_XXXXXX;

以上是Packages包的内容,开始那个是Package Bodies包体里的内容
游琬胥梓蓓
2019-06-05 · TA获得超过1150个赞
知道小有建树答主
回答量:1825
采纳率:100%
帮助的人:8.3万
展开全部
用executereader方法去执行这个存储过程,会返回一个datareader对象,这里面就包含了cursor类型的输出参数值,其实就是查询结果集。就按普通的select处理就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式