string sql = "delete TB_USER_ROLE_PREMISSION where ROLE_ID='" + roleId + "'";
        for (int i = 0; i < this.ckPermission.Items.Count; i++)
        {
            if (this.ckPermission.Items[i].Selected)
            {
                //sql += " insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ")";
                            }
        }在oracle中我用了这样的sql语句,跟踪的语句如下:delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','1001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','2001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','3001')insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','4001')现在报的错误是Message = "ORA-00933: SQL 命令未正确结束\n"望大狭们指点下,错在那里??

解决方案 »

  1.   

    : SQL 命令未正确结束\n"望大狭们指点下,错在那里??
    哪里多了个换行符
      

  2.   

    if (this.ckPermission.Items[i].Selected) 
                { 
                    //sql += " ; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ")"; 
                                } 
    试一下!
      

  3.   

    报的错误是:Message = "ORA-00911: 无效字符\n"??
      

  4.   

    delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'insert into
    ----------
    这被视为一句...“'6'insert”是无效字符...
      

  5.   

    delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'后面已经加;了啊
      

  6.   

    现跟出的结果是:
    delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001);  insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999)
    报的错误是Message = "ORA-00911: 无效字符\n"?? 
      

  7.   


    string sql = "delete TB_USER_ROLE_PREMISSION where ROLE_ID='" + roleId + "';";
    for (int i = 0; i < this.ckPermission.Items.Count; i++)
            {
                if (this.ckPermission.Items[i].Selected)
                {
                    sql += " insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ");";
                                }
            }试试这样
      

  8.   


    跟出的结果
    delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6006) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6007) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999)
    报的错仍然是ORA-00911: 无效字符 
      

  9.   


    string sql = "delete TB_USER_ROLE_PREMISSION where ROLE_ID='" + roleId + "'"; 
            for (int i = 0; i < this.ckPermission.Items.Count; i++) 
            { 
                if (this.ckPermission.Items[i].Selected) 
                { 
                    sql += "; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values('" + roleId + "','" + this.ckPermission.Items[i].Value + "')"; 
                                } 
            } 如果TB_USER_ROLE_PREMISSION表中ROLE_ID和ROLE_PID字段都为字符型,正确形式应该是:
    delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values('6','1001'); insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values('6','6006') 
      

  10.   

    sql += " insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(" + roleId + "," + this.ckPermission.Items[i].Value + ")"; 可能是楼主后面的这个换行符,
    还有如楼上所说的,如果是字符型的话要'"+FSD+"'
      

  11.   

    delete TB_USER_ROLE_PREMISSION where ROLE_ID='6'insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','1001')
    insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','2001')
    insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','3001')
    insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID) values('6','4001') Oracle在一个语句里面不能同时执行两个以上语句,这是和sqlserver不同的地方Mapper.BeginTran..
    try
    {
      Mapper.delete..
      for (int i=0;i<4;i++)
      {
         Mapper.Insert...
      }
      Mapper.Comm...
    }
    catch()
    {
      Mapper.RoolBack...
    }参考FortuneBase中的写法
    参考地址www.cnblogs.com/mail-ricklee
      

  12.   

    报的错仍然是ORA-00911: 无效字符 
      

  13.   

    我这是在web页面的??请高手帮忙啊??
      

  14.   

    把你执行部分的代码写出来,另外建议你用Store Procedure
      

  15.   

    你也要同时执行多个SQL操作的话,只能使用存储过程。正如14楼所说,.net操作Oracle数据库的时候,不允许同时执行多个SQL语句,而存储过程只有一个,所以可以执行。
      

  16.   


    这个错误是微软的搞笑之处,其实是遇到了分号造成的,微软在操作Oracle的时候,不允许出现分号,它不会把分号解释为分隔符,只会理解为一般的字符,而作为一般字符又无法理解它的含义,最后就抛出了“无效字符”的异常了。
      

  17.   

    begin delete TB_USER_ROLE_PREMISSION where ROLE_ID=6; insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001); insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6004); insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999); end
    报的错误是:ORA-06550: 第 1 行, 第 264 列: PLS-00103: 出现符号 "end-of-file"在需要下列之一时: ; 符号 ";" 被替换为 "end-of-file" 后继续。
      

  18.   

    fly,你要是不会写Oracle的存储过程就直说,不用贴出那么长的SQL语句了,肯定不能执行的。
      

  19.   

    但是将;去后
    begin delete TB_USER_ROLE_PREMISSION where ROLE_ID=6 insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,1001) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,6004) insert into TB_USER_ROLE_PREMISSION(ROLE_ID,ROLE_PID)values(6,9999) end
    报的错误又是
    ORA-06550: 第 1 行, 第 54 列: PL/SQL: ORA-00933: SQL 命令未正确结束 ORA-06550: 第 1 行, 第 7 列: PL/SQL: SQL Statement ignored ORA-06550: 第 1 行, 第 260 列: PLS-00103: 出现符号 "end-of-file"在需要下列之一时: 
      

  20.   

    for循环里边的sql这个变量应该重新起个名字吧