删除钉钉用户出错,userid:-1,错误消息:从数据类型 varchar 转换为 bigint 时出错。,错误详情: at System.Data.SqlClient.SqlConnection.OnErrorSystem.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.HasMoreRows()
at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
at cn.focusmedia.fum.data.SqlHelper.RunProcedure(String storedProcName, IDataParameter[] parameters, String tableName) in F:\xm\svn\FUM\Source\NetFocusDingDing\DingSyncMVC\cn.focusmedia.fum.data\SqlHelper.cs:line 523
at cn.focusmedia.fum.data.DingDao.GetUserModelListToDelete() in F:\xm\svn\FUM\Source\NetFocusDingDing\DingSyncMVC\cn.focusmedia.fum.data\DingDao.cs:line 340
at cn.focusmedia.fum.data.DingSync.deleteInvalidUser() in F:\xm\svn\FUM\Source\NetFocusDingDing\DingSyncMVC\cn.focusmedia.fum.data\DingSync.cs:line 220
查看报错信息,发先是sql中的报错,代码里面是使用存储过程编写,初步思考是由于字段的类型不同,但是赋值时没有进行转换导致的错误。
看一下原本的存储过程:
这里jobnumber为varchar类型,但是E_SN为bigint类型,发现就是因为在赋值时并没有进行转化。
改变后:
使用cast(E_SN as varchar)函数进行转换。