zoukankan      html  css  js  c++  java
  • 第一次写Oracle碰到的问题

       今天是第一次写Oracle的存储过程,由于新手,被一些东西纠结了一天。特此记录下,让自己以后不要在犯错了。

      1.count(*)

       第一次写Oracle的存储过程,没什么经验,就count(*)这个问题,让我正正花费了一个早上。

      example:

       CREATE OR REPLACE PROCEDURE Demo( IdentityCardNo IN VARCHAR2) as

      

          v_Count number;

      

          Begin ...

      select count(*) into v_Count from userinfo where identityCardNo(身份证)=identityCardNo 按理说,这只是个简单语句。就是看看这个身份证

    在userinfo表中是否存在值。v_Count只会是0或者1,可是输出的时候会输出500+或是5000+。直接在SQL窗口执行都没问题,但是在

    存储过程里就出现这奇怪的数字。

         解决:

          后来是发现我定义的参数名和数据库中表的字段名一样了,将定义的参数名(IdentityCardNo)成改掉就可以了。(但是还是不清楚原理是为什么?如果大家有知道原理的,请告诉下我。)

    2.Net调用问题了

       数据库中一定存在"Demo" 的存储过程,但是调用

            OracleParameter[] parameter = new OracleParameter[]{
                    new OracleParameter("Content", OracleType.Number),

           new OracleParameter("result_Num", OracleType.Number)};

        parameter[0].Value = ...;
        parameter[1].Value = ...;

        parameter[0].Direction = ParameterDirection.Input;

        parameter[1].Direction = ParameterDirection.Output;

        int rowEffect;

     DbHelperOra.RunProcedure("Demo", parameter,out rowEffect);就会出现

    ORA-06550: 第 1 行, 第 23 列:
    PLS-00222: 在此范围中不存在名为 Demo 的函数
    ORA-06550: 第 1 行, 第 7 列:
    PL/SQL: Statement ignored
    完全不明所以了,最后终于在google里找到一个方案了。原地址:http://m.blog.csdn.net/blog/mm3646/7848180
    对于存储过程中,含有输出类型的参数,如: ResultValue out number   时,在界面上 传参时,不能用   int result= DbHelperOra.RunProcedure("PRJ_PersonalLogTask_PKG.ChangeWorkTask", param,out rowEffect);     这种形式    要修改成:
          修改成:DbHelperOra.RunProcedure("Demo", parameter);
    int resuleNum=Convert.ToInt32(parameter[1].Value);
    这样就可以了。

    由于第一次写Oracle存储过程,就这两个问题真是困扰了一天,先自己记录一下,防止以后犯同样的错误。
  • 相关阅读:
    6、Django模板语法
    django 使用form验证用户名和密码
    django 用户登陆的实现 构造类的方式
    django 登陆增加除了用户名之外的手机和邮箱登陆
    django xadmin的全局配置
    django xadmin app models 注册
    django之xadmin
    django后台数据管理admin设置代码
    django的所有app放在一个文件夹下便于管理
    django重写用户模型
  • 原文地址:https://www.cnblogs.com/hualuohuakaihuamanyuan/p/3638907.html
Copyright © 2011-2022 走看看