我的sql 语句是向一个表中插入3条记录,在Oracle 中直接就可以了,但是在程序中就不能执行了, 
insert into Evaluation(NBUSINESSNUM,VBUSINESSNAME,NEVALUATIONINFOID,NCONNUM,VCONTENT,VREMARKS,
 NAPPRAISALEMPID,VAPPRAISALEMPNAME,NEVALUATIONEMPID,VEVALUATIONEMPNAME,NSCORE)  
 values(0,'员工自评',4,1,'教育一','教育一',410000010,'李华', 410000010,'李华',10);
  insert into Evaluation(NBUSINESSNUM,VBUSINESSNAME,NEVALUATIONINFOID,NCONNUM,VCONTENT,VREMARKS,
  NAPPRAISALEMPID,VAPPRAISALEMPNAME,NEVALUATIONEMPID,VEVALUATIONEMPNAME,NSCORE)  values
  (0,'员工自评',4,2,'教育2','教育2',410000010,'李华', 410000010,'李华',8);
   insert into Evaluation(NBUSINESSNUM,VBUSINESSNAME,NEVALUATIONINFOID,NCONNUM,VCONTENT,VREMARKS,
   NAPPRAISALEMPID,VAPPRAISALEMPNAME,NEVALUATIONEMPID,VEVALUATIONEMPNAME,NSCORE)
    values(0,'员工自评',4,3,'要有3','要有3',410000010,'李华', 410000010,'李华',5)public int AddInfo(string strWhere)
        {
            string strConn = PostBank.DBUtility.PubConstant.ConnectionString;
            OracleConnection cn = new OracleConnection(strConn);
            cn.Open();
            OracleTransaction trans = cn.BeginTransaction();
            OracleCommand cmd = new OracleCommand(strWhere,cn);
            cmd.Transaction = trans;
            try
            {
                cmd.ExecuteNonQuery();
                trans.Commit();
                return 1;
            }
            catch
            {
                trans.Rollback();
                return 0;
            }
            finally
            {
                cn.Close();
            }
        }
那位高手赐教啊?
多谢!

解决方案 »

  1.   

       try 
                { 
                    cmd.ExecuteNonQuery();  //   "ORA-00911: 无效字符
               
                    trans.Commit(); 
                    return 1; 
                }
    这样的错误,好奇怪啊,????
      

  2.   

    strWhere是什么,上面三条语句拼成的sql吗?不应该啊报什么错吗?
      

  3.   

    你把三个丢在一个string里面?
      

  4.   

    strWhere 就是上面的三条语句拼成的sql吗
      

  5.   

    我用的是oracle 9i 我也是不太清楚为啥会出现这样的错误。
    我的字符串在oracle 中可以执行的。但是在程序中就出错了。奇怪啊。!!!!
      

  6.   


    对看这里http://www.cnblogs.com/zhangronghua/archive/2007/08/29/874484.html
    ORA-00911错误及解决方法     今天在开发中遇到了一个问题,被困扰了好找时间。 事情是这样的,
    因为我们现在做的系统数据库是用oracle,而我又喜欢凡是和数据库
    有关的语句先在pl/sql developer里面测试好了,再往程序里面写。而今天做的代码里
    面涉及到查询库里面现在有没有用户输入的表所对应的同义词。所以我便写了这样的一条语句:
    string.format(select * from user_synonyms where upper(synonym_name)='{0}' and  upper(table_name)='{0}';",
          this.txtSourceTableName.Text.ToUpper());谁知在调试的时候走到这个地方就报“ORA-00911: 无效字符”的错误。
    可是我明明在pl/sql developer里面测试好了的。困惑了好一会,才发现是最后面的那个“;”号惹的祸。
    把它删除掉就行了。
      

  7.   

    去掉分号更不行了, 出现了SQL 命令未正确结束的错误,在程序中和数据库中都不能通过的。
      

  8.   

    实在不行,你这样
    try 
                {                 cmd.CommandText = "";
                    cmd.ExecuteNonQuery();                cmd.CommandText = "";
                    cmd.ExecuteNonQuery();                cmd.CommandText = "";
                    cmd.ExecuteNonQuery();
     
                    trans.Commit(); 
                    return 1; 
                } 
                catch 
                { 
                    trans.Rollback(); 
                    return 0; 
                } 分开赋值,然后运行。
      

  9.   

    我看了,他的是一条sql 语句,而我的是两条三条sql 语句当然要用;了,不一样的。
      

  10.   

    网上搜 ORA-00911 这个错误号,全是分号引起的
      

  11.   

    我在oracle中试过了,可以执行的。
      

  12.   

    如果不要分号,sql 语句要如何写那?
    请大侠指导啊,
      

  13.   

    我把sql 语句分开为三条语句可以 执行,但是我想用一条语句使用啊,这样效率会跟高点,但是不知道如何写,才可以直接正确的执行,希望大侠可以指导
    例如一个简单的表
    id number 
    name varchar2如何向这个表中添加三条数据啊
    insert into table (id,name)values(1,'a');insert into table (id,name)values(2,'a');
    insert into table (id,name)values(3,'a')
    在oracle 中试可以执行的,但是在程序中就出错了,改如何写
      

  14.   

    可是像上面的语句我通过程序在Sql server中就可以一次执行的,insert into table (id,name)values(1,'a');insert into table (id,name)values(2,'a'); 
    insert into table (id,name)values(3,'a')为啥在oracle
    中就不可以了,肯定是哪里没有注意到,但是是哪里啊?
    高手指教???
      

  15.   

    我晕了,csdn 没有高手了,
    这个问题真的这么难吗?
    不像啊,就是简单的问题啊。
      

  16.   

    你们说的都错了,不是空格的问题,也不是分号的问题,应该是在sql 语句前面加begin 在后面加end;
    例如下面的语句就可以了
    begin
    insert into table (id,name)values(1,'a');
    insert into table (id,name)values(2,'a'); 
    insert into table (id,name)values(3,'a');
    end;
    就可以执行了,我找了好久,也试了好久,才搞定的。你们说的方法都试过了,都是错的。
    所以就不给你们分了。