1. 程式人生 > 其它 >sql中報錯:“從資料型別 varchar 轉換為 bigint 時出錯”解決

sql中報錯:“從資料型別 varchar 轉換為 bigint 時出錯”解決

技術標籤: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)函式進行轉換。