ORA-01036:非法的变量名/编号问题解决方法

在项目中,用到了SQL中包含参数(Parameter)的用法,如果参数格式书写错误,就会报: ORA-01036:非法的变量名/编号。并且不同的数据库的用法还不相同。现总结如下:

    // Oracle
    StringBuilder strSql = new StringBuilder();
    // 组合SQL
    strSql.Append(" INSERT INTO TABLE (");
    strSql.Append(" USERCODE,"); // 用户代码
    strSql.Append(" USERNAME,"); // 用户名称
    strSql.Append(" CREATEUSER,"); // 创建人
    strSql.Append(" UPDATEUSER"); // 更新人
    strSql.Append(" ) VALUES (");
    strSql.Append(" :USERCODE,"); // 用户代码
    strSql.Append(" :USERNAME,"); // 用户名称
    strSql.Append(" :CREATEUSER,"); // 创建人
    strSql.Append(" :UPDATEUSER"); // 更新人
    strSql.Append(" )");

    // 声明参数数组
    OracleParameter[] parameters =
    {
        new OracleParameter("USERCODE", 'testusercode'), // 用户代码
        new OracleParameter("USERNAME", 'testusername'), // 用户名称
        new OracleParameter("CREATEUSER", 'user'), // 创建人
        new OracleParameter("UPDATEUSER", 'user'), // 更新人
    };

    // DB2
    StringBuilder strSql = new StringBuilder();
    // 组合SQL
    strSql.Append(" INSERT INTO TABLE (");
    strSql.Append(" USERCODE,"); // 用户代码
    strSql.Append(" USERNAME,"); // 用户名称
    strSql.Append(" CREATEUSER,"); // 创建人
    strSql.Append(" UPDATEUSER"); // 更新人
    strSql.Append(" ) VALUES (");
    strSql.Append(" ?,"); // 用户代码
    strSql.Append(" ?,"); // 用户名称
    strSql.Append(" ?,"); // 创建人
    strSql.Append(" ?"); // 更新人
    strSql.Append(" )");

    // 声明参数数组
    DB2Parameter[] parameters =
    {
        new DB2Parameter("USERCODE", 'testusercode'), // 用户代码
        new DB2Parameter("USERNAME", 'testusername'), // 用户名称
        new DB2Parameter("CREATEUSER", 'user'), // 创建人
        new DB2Parameter("UPDATEUSER", 'user'), // 更新人
    };


    // SQLServer
    StringBuilder strSql = new StringBuilder();
    // 组合SQL
    strSql.Append(" INSERT INTO TABLE (");
    strSql.Append(" USERCODE,"); // 用户代码
    strSql.Append(" USERNAME,"); // 用户名称
    strSql.Append(" CREATEUSER,"); // 创建人
    strSql.Append(" UPDATEUSER"); // 更新人
    strSql.Append(" ) VALUES (");
    strSql.Append(" @USERCODE,"); // 用户代码
    strSql.Append(" @USERNAME,"); // 用户名称
    strSql.Append(" @CREATEUSER,"); // 创建人
    strSql.Append(" @UPDATEUSER"); // 更新人
    strSql.Append(" )");

    // 声明参数数组
    SqlParameter[] parameters =
    {
        new SqlParameter("@USERCODE", 'testusercode'), // 用户代码
        new SqlParameter("@USERNAME", 'testusername'), // 用户名称
        new SqlParameter("@CREATEUSER", 'user'), // 创建人
        new SqlParameter("@UPDATEUSER", 'user'), // 更新人
    };