OracleParameter[] parameters = {
......
                    OracleHelper.MakeInParam(":Name", OracleType.VarChar,100,model.Name),                    ...............
};当model.Name=null时就会报错:ORA-01008: not all variables bound
SQL Server是可以这样处理的,
Oracle是不是不能这么做?还是哪里没配置好?

解决方案 »

  1.   

    c#不会,如果这样的话可以在执行这句前判断一下是否为null
      

  2.   

    谢谢,我想确认下是Oracle不允许这么做还是我设置的问题
      

  3.   

    谢谢,我想确认下是Oracle不允许这么做还是我设置的问题
      

  4.   

    测试显示在pl/sql中使用绑定变量,当变量为null时,动态语句并未报错,绑定变量的处理主要应该是和程序有关SQL> declare
      2  v number := null;
      3  t number := 0;
      4  begin
      5  dbms_output.put_line('asd : '||v);
      6  execute immediate 'select count(1) from dual where 1 = :v' into t using v;
      7  dbms_output.put_line(t);
      8  end;
      9  /asd : 
    0PL/SQL procedure successfully completedSQL> 
    SQL> declare
      2  v number := 1;
      3  t number := 0;
      4  begin
      5  dbms_output.put_line('asd : '||v);
      6  execute immediate 'select count(1) from dual where 1 = :v' into t using v;
      7  dbms_output.put_line(t);
      8  end;
      9  /asd : 1
    1PL/SQL procedure successfully completedSQL> 
      

  5.   

    我设置是可以为null的,
    我用的是providerName="System.Data.OracleClient",
    不知道跟这又没关系?
    把null改为DBNull.Value是可以的, 
      

  6.   

    应该使用DBNull.Value的,个人觉得因为程序语言中的null和数据库中null并不是同一种类型,需要映射或者转换以下我想DBNull就是做的这个工作。