使用oracleccommand插入时出现非法变量名/号错误

本文关键字:变量名 错误 非法 oracleccommand 插入 使用 | 更新日期: 2023-09-27 18:19:05

当我尝试使用c#将记录插入到表中时,我得到以下错误,

Message = "ORA-01036: illegal variable name/number'n"
Source = "System.Data.OracleClient"
StackTrace = "   at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)'r'n   at System.Data.OracleClient.OracleParameterBinding.Bind(OciStatementHandle statementHandle, NativeBuffer parameterBuffer, OracleConnection connection, Bo...
TargetSite = {Void CheckError(System.Data.OracleClient.OciErrorHandle, Int32)}
我代码:

Int32 intLogID = 0;
strSQL = "INSERT INTO log_data(log_id, response_msg) "
                                        + "VALUES(?, ?)";
OracleCommand cmd = new OracleCommand(strSQL, conn);
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("log_id", OracleType.Int32).Value = intLogID;
cmd.Parameters.Add("response_msg", OracleType.VarChar, 256).Value = strResMsg;
cmd.ExecuteNonQuery();

我的表结构:

LOG_ID          NOT NULL NUMBER(18) 
RESPONSE_MSG    VARCHAR2(256)

我能够成功地插入到表中,当我尝试手动使用,

INSERT INTO log_data(log_id, response_msg)
values (1067365, 'test'); 

我甚至尝试了int intLogID = 0;cmd.Parameters.Add("log_id", OracleType.Number).Value = intLogID;

Int32与Number结合,intInt32结合。

但仍然得到相同的错误。有什么问题吗?

使用oracleccommand插入时出现非法变量名/号错误

我想你应该把你的查询作为

"INSERT INTO log_data(log_id, response_msg) VALUES(:log_id,:response_msg)"

因为您提供了诸如

之类的特定参数
cmd.Parameters.Add("log_id", OracleType.Number).Value = intLogID;