国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

數(shù)據(jù)庫(kù)查詢(xún)結(jié)果的動(dòng)態(tài)排序(1)

2024-07-21 02:10:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 在公共新聞組中,一個(gè)經(jīng)常出現(xiàn)的問(wèn)題是“怎樣才能根據(jù)傳遞給存儲(chǔ)過(guò)程的參數(shù)返回一個(gè)排序的輸出?”。在一些高水平專(zhuān)家的幫助之下,我整理出了這個(gè)問(wèn)題的幾種解決方案。


一、用if...else執(zhí)行預(yù)先編寫(xiě)好的查詢(xún)


  對(duì)于大多數(shù)人來(lái)說(shuō),首先想到的做法也許是:通過(guò)if...else語(yǔ)句,執(zhí)行幾個(gè)預(yù)先編寫(xiě)好的查詢(xún)中的一個(gè)。例如,假設(shè)要從northwind數(shù)據(jù)庫(kù)查詢(xún)得到一個(gè)貨主(shipper)的排序列表,發(fā)出調(diào)用的代碼以存儲(chǔ)過(guò)程參數(shù)的形式指定一個(gè)列,存儲(chǔ)過(guò)程根據(jù)這個(gè)列排序輸出結(jié)果。listing 1顯示了這種存儲(chǔ)過(guò)程的一個(gè)可能的實(shí)現(xiàn)(getsortedshippers存儲(chǔ)過(guò)程)。



【listing 1: 用if...else執(zhí)行多個(gè)預(yù)先編寫(xiě)好的查詢(xún)中的一個(gè)】


create proc getsortedshippers

@ordseq as int

as


if @ordseq = 1

select * from shippers order by shipperid

else if @ordseq = 2

select * from shippers order by companyname

else if @ordseq = 3

select * from shippers order by phone





  這種方法的優(yōu)點(diǎn)是代碼很簡(jiǎn)單、很容易理解,sql server的查詢(xún)優(yōu)化器能夠?yàn)槊恳粋€(gè)select查詢(xún)創(chuàng)建一個(gè)查詢(xún)優(yōu)化計(jì)劃,確保代碼具有最優(yōu)的性能。這種方法最主要的缺點(diǎn)是,如果查詢(xún)的要求發(fā)生了改變,你必須修改多個(gè)獨(dú)立的select查詢(xún)——在這里是三個(gè)。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 方山县| 眉山市| 庆云县| 南木林县| 玉环县| 通州区| 苗栗市| 安远县| 宣城市| 乌兰浩特市| 黔江区| 彭阳县| 泗阳县| 万源市| 北川| 唐山市| 东乌珠穆沁旗| 清涧县| 丹棱县| 乌兰浩特市| 牡丹江市| 舟山市| 耒阳市| 康平县| 云龙县| 牙克石市| 榆中县| 太仓市| 佛冈县| 通榆县| 绥棱县| 阿鲁科尔沁旗| 怀宁县| 山西省| 马边| 揭西县| 香河县| 上林县| 高雄县| 宁安市| 东乡县|