sql中報錯:“從資料型別 varchar 轉換為 bigint 時出錯”解決
阿新 • • 發佈:2021-01-27
技術標籤:sql
刪除釘釘使用者出錯,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)函式進行轉換。