ORACLE中这样的写法
update TB_USER_INFO set USER_ROLE=@P0 where USER_NAME=@P1报  非法的变量名/编号 请改正下??多谢

解决方案 »

  1.   


    update TB_USER_INFO set USER_ROLE=:P0 where USER_NAME=@P1 应该是:而不是@
      

  2.   

    update TB_USER_INFO set USER_ROLE=@P0 where USER_NAME=@P1 显然,这是带参数的语句.
    update TB_USER_INFO set USER_ROLE=@P0 where USER_NAME=@P1 ;
    ";"是用来结尾的.
    跟SQL带参数的语句一样.....
    你的cmd.Paramters.AddWithValue....
      

  3.   

     public void UpdateRole(string UserName,int roleId) 
        {
            sql = "update TB_USER_INFO set USER_ROLE=:P0 where USER_NAME=@P1";
            object[] argVal ={ roleId, UserName };
            DataOperater.dbo.ExecuteSql(sql, argVal);
        }还是报 非法的变量名/编号?请指教啊
      

  4.   

    你后面的那个@也修改一下,oracle的参数用的是:而不是SqlServer的@
      

  5.   

    update TB_USER_INFO set USER_ROLE=:P0 where USER_NAME=:P1 
      

  6.   

    这个是对的:
       oracle 的参数 使用的是 "?" 和 ":" ..........
      

  7.   

     
    public void UpdateRole(string UserName,int roleId) 
        {
            sql = "update TB_USER_INFO set USER_ROLE=:P0 where USER_NAME= :P1";
            object[] argVal ={ roleId, UserName };
            DataOperater.dbo.ExecuteSql(sql, argVal);
        }
    不对啊,还是非法的变量名/编号
      

  8.   

    public void ExecuteSql(string argSqlString, object[] argVal)
        {
            OracleCommand sqlExecuteCommand = new OracleCommand(argSqlString, dbConnection);
            if (dbTrans != null)
                sqlExecuteCommand.Transaction = dbTrans;
            sqlExecuteCommand.Prepare();
            for (int i = 0; i < argVal.Length; i++)
            {
                sqlExecuteCommand.Parameters.AddWithValue("@P" + i.ToString(), argVal[i]);
            }
            sqlExecuteCommand.ExecuteNonQuery();
        }
      

  9.   

    update TB_USER_INFO set USER_ROLE=:P0 where USER_NAME=:P1
    改成冒号就好了! 
      

  10.   

    update TB_USER_INFO set USER_ROLE=:P0 where USER_NAME=:P1当然,如果用IBatisNet,可以在SQLServer和Oraolce直接互相转化update TB_USER_INFO set USER_ROLE=#P0# where USER_NAME=#P1#自动转化为@P0或者:P0可以参考FortuneBase中IBatisNet用法,参考地址
    www.cnblogs.com/mail-ricklee