4
我執行的UPDATE .WRITE()語句,並發現了它,如果你定義它像這顯然只適用:爲什麼只有使用[column] .WRITE(),而不是[table]。[column] .WRITE()時,UPDATE .WRITE()才起作用。
string sql = "UPDATE [dbo].[Table] SET [Column].WRITE(@data, @offset, @count) WHERE ...";
...
sqlCommand.ExecuteNonQuery();
但是,如果我用[dbo].[Table].[Column].WRITE(...)
或[Table].[Column].WRITE(...)
,拋出一個異常:
Incorrect syntax near 'WRITE'.
Stack trace:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
...
這是爲什麼?它與構建SQL語句的通常方式似乎並不一致。對於這種看似罕見的約定,是否有任何意義,你顯然不允許明確指定表名和模式?
@marc_s我用它來更新塊一個VARBINARY(max)列,因爲它是可能的它是非常長(100MB +)。還有另一種方法可以做到這一點,因爲據我所知,.WRITE是通常的方式? – w128
@marc_s根據文檔,它是WRITETEXT和UPDATETEXT方法,它們將與ntext,text和image數據類型一起折舊,而不是用於varchar(max),nvarchar(max)的WRITE方法varbinary(最大)數據類型。 [來源](http://msdn.microsoft.com/en-us//library/ms177523.aspx#LOBValues) – jpw