oracle 存储过程 传参数,如果是希望传参值也被利用起来,存储过程里面虽有IN,但OUT必不可少。

原创 2015年09月12日 19:43:30
oracle 存储过程 传参数,如果是希望传参值也被利用起来,存储过程里面虽有IN,但OUT必不可少。
oracle 存储过程 传参数,如果是希望传参值也利用起来,如果在 存储过程里面该参数只写 IN,而不写OUT,那只会返回部分数据。而加上OUT,最终写成IN OUT,则完全无问题,请大家看注释部分。
            int point = 0; string MYSTATUS = ""; int kkk = 0;
            //存储过程的参数声明
            OracleParameter[] parameters ={
                                 new OracleParameter("MYMEMBER_CODE",OracleType.VarChar,50),
                                new OracleParameter("point",OracleType.VarChar,30),
                                 new OracleParameter("MYSTATUS",OracleType.VarChar,20)
                                                };
            parameters[0].Value = strvip; parameters[1].Value = point; parameters[2].Value = MYSTATUS;
            parameters[0].Direction = ParameterDirection.InputOutput; parameters[1].Direction = ParameterDirection.Output; parameters[2].Direction = ParameterDirection.Output;
            try
            {
                OracleAccess.logger.Debug(" p_GetVipBalanceStoredProcedure 执行前 " + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString() + strvip );

                if (exist_vipProcedure(strvip))
                {
                    YHJ_StoredProcedure.RunProcedure("p_GetVipBalanceStoredProcedure", parameters);

                    OracleAccess.logger.Debug(" p_GetVipBalanceStoredProcedure 执行后 " + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString() + strvip);

                    kkk = Convert.ToInt32(parameters[2].Value);
                    if (kkk >= 1)
                    {
                        vipinf myvipinf = new vipinf();
                        myvipinf.str_point = parameters[1].Value.ToString();//myvipinf.str_grade=parameters[2].Value.ToString();myvipinf.str_coupon_int=parameters[3].Value.ToString();
                        myvipinf.str_membercode = parameters[0].Value.ToString();//第一个参数不加OUT 只返回前5个字符,如果加了OUT则返回完整字符。
			 myvipinf.str_discount = "0.9";
                        return myvipinf;
                    }

                }
                

            }
            catch (Exception e)
            {
                OracleAccess.logger.Debug(" p_GetVipBalanceStoredProcedure 执行前 " + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString() + strvip+e.Message.ToString());
                throw e;
            } 

存储过程:

CREATE OR REPLACE PROCEDURE  p_GetVipBalanceStoredProcedure ( MYMEMBER_CODE IN OUT VARCHAR2 , point OUT VARCHAR2,MYSTATUS OUT VARCHAR2 ) 


IS
    point_old     INT;
    point_updated INT;
    yhjerror      EXCEPTION;
    tempint       INT;
    tempa         INT;
      myresult INT;
BEGIN
    myresult:=0;MYSTATUS:='';

SELECT M.POINTS INTO point_old  FROM  MEMBERSHIP M WHERE TRIM(M.MEMBER_CODE) = MYMEMBER_CODE;

    myresult:=SQL%ROWCOUNT;

	point:=point_old;
    MYSTATUS:=myresult;
    IF ((myresult<>1) OR (myresult=0)) THEN
        BEGIN
            MYSTATUS:=0;
        end;
    END IF ;

END p_GetVipBalanceStoredProcedure;


C# ref与out 引用和传值的区别

C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效...
  • u013192061
  • u013192061
  • 2015年03月04日 09:06
  • 742

Oracle存储过程in、out、in out 模式参数

1、in模式参数 输入模式的参数,用于接收参数,在子程序内部,不能进行修改。默认的参数模式:in。--定义打印的存储过程 CREATE OR REPLACE PROCEDURE println (s...
  • lin434406218
  • lin434406218
  • 2016年11月14日 11:59
  • 3602

oracle存储过程(游标作为OUT参数输出)

包中带过程      要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 procedure AAA(变量名 out [cur_name])如此申明O...
  • ytlizhen1
  • ytlizhen1
  • 2013年02月26日 21:08
  • 2816

Oracle基础知识(二十二) - 存储过程in out inout三种参数模式

参考博客:http://blog.csdn.net/lushuaiyin/article/details/9289275 写的很好,学习一下...
  • jolingogo
  • jolingogo
  • 2014年05月23日 14:12
  • 8519

Java的方法的参数传递,值传递和引用传递还有String字符串传递

方法的参数传递 1、值传递  a) 方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。传到方法里的参数类型是基本数据类型的都叫值传递 2、引用传递 ...
  • wolf09311
  • wolf09311
  • 2014年11月11日 14:35
  • 4691

Oracle中字段为空处理成0

Oracle数据库中的函数 A :表名, B: 要修改的字段名 update A set  B = replace(b, 'null', '0') where id = '5644'; ...
  • liyintaoliuyun
  • liyintaoliuyun
  • 2016年06月28日 11:25
  • 2526

Session与Cookie会话及页面传值

1、页面中传值(Get与Post、Session、Cookie、QueryString、Application、Server.Transfer) A、Get与Post    异同:   ...
  • yimiyuangguang
  • yimiyuangguang
  • 2013年12月17日 11:25
  • 3197

Python 传值和引用总结

Python中不明确区分赋值和应用,一般对静态变量的传递为赋值,对动态变量的传递为引用。(注,对静态变量首次传递时也是应用,当需要修改静态变量时,因为静态变量不能改变,所以需要生成一个新的空间存储数据...
  • bergus
  • bergus
  • 2015年04月09日 23:52
  • 476

Oracle存储过程in、out、in out 模式参数

1、in模式参数 输入模式的参数,用于接收参数,在子程序内部,不能进行修改。默认的参数模式:in。 --定义打印的存储过程 CREATE OR REPLACE PROCEDURE println...
  • H12KJGJ
  • H12KJGJ
  • 2017年03月10日 14:35
  • 192

iOS的几种传值方法

第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值、block传值 那么第一个视图控制器如何获的第...
  • nana12356789
  • nana12356789
  • 2016年02月18日 15:58
  • 2028
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 存储过程 传参数,如果是希望传参值也被利用起来,存储过程里面虽有IN,但OUT必不可少。
举报原因:
原因补充:

(最多只允许输入30个字)