程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL存儲過程中傳入參數實現任意字段排序

SQL存儲過程中傳入參數實現任意字段排序

編輯:關於SqlServer

在做一個project的時候,要對表實現任意的排序,說得明白點就是這樣:

在存儲過程中聲明一個@parameter,然後在使用查詢條件後的排序,要根據我的@parameter來實現,而我這個@parameter實際傳進去的就是一個字段值。

網上Google了一下,發現有這樣的例子,大多數都是以普提樹的多字段任意分頁的存儲過程結合在一起,看起來好不復雜,而我現在沒必要搞分頁,沒有辦法實現嗎???

我先按常理搞了一個這樣的:

select * from SiteDetailInfo where SiteBasicId = SiteId And SiteIsCheck = 1 order by  @Parameter desc

在查詢分析器中運行報錯:

ORDER BY 子句所標識的第 %1! 個 SELECT 項包含了一個變量,該變量位於標識列位置的表達式中。只有排序依據表達式引用的是列名時,才允許在該表達式中使用變量。

好像語法上有問題,這是意料之中的,隱約記得應該加上單引號之類的,問了一下網友史帝爾,很快就丟過答案過來了,果然是有點語法上的問題.

修正如下:

create   procedure   proc_test
@fieldname   varchar(50)
as

declare   @sql   varchar(1000)
set   @sql= "update   [table]   set   "   +   @fieldname   +   "= "   +   @fieldname   +   "+1 "
exec(@sql)

go

或者:

declare   @field   varcahr(10)
update   table   (case   @field   when   "字段1名 "   then   set   字段1   =   字段1   +   1
                                                    when   "字段2名 "   then   set   字段2   =   字段2   +   1
                                                    ....   end)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved