如果我以這種格式編寫一個sproc,sql server會有效地執行這個操作還是應該在服務器端(.net)完成sql'編織'?這是一個高效的sql服務器查詢?
注:這是什麼我的查詢看起來像只是一個粗略的想法,有更多的「如果」子句建立我查詢我執行使用「EXEC」
declare @sql nvarchar(4000)
declare @order nvarchar(4000)
set @sql = 'select id, name'
set @sql = @sql + ' ....'
if(@sortOrder)
set @order = 'order by name desc'
exec @sql + @order
類型列必須是相同的(NULL未使用的): ORDER BY CASE WHEN @Order 1 THEN [ DateOfBirth] ELSE NULL END ,CASE @Order WHEN 2 THEN [DateOfBirth] ELSE NULL END DESC ,CASE @Order WHEN 3 THEN [LastName] ELSE NULL END ,CASE @Order WHEN 4 THEN [LastName] ELSE NULL END DESC – IDisposable 2009-01-26 21:32:58
不,他們不。只要您將CAST轉換爲sql_variant,那麼這些列在同一CASE中都可以是不同的類型,並且不需要將任何值設置爲NULL。嘗試一下,它的作品。我做了很多次。 – 2009-01-27 16:09:56
如果您轉換爲sql_variant,則排序邏輯將基於字符串,因此數值不會按預期排序。 – IDisposable 2009-06-24 19:25:56