• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 測試技術
    • 博客
    • 視頻
    • 開源
    • 論壇
    • 沙龍
    • 下載
    • 雜志
    • 招聘

    您的位置:您的位置:軟件測試技術網 >> 軟件測試技術 >> 開發語言 >> 數據庫 >> 查看資訊

    字號: | 推薦給好友 上一篇 | 下一篇

    數據庫查詢結果的動態排序

    發布: 2008-10-14 11:53 | 作者: 不詳 | 來源: programfan.com  | 查看: 35次 | 進入領測軟件測試網論壇討論

    領測軟件測試網 軟件測試技術網!AhNn5B V v9KSb

    軟件測試技術網Y0??7rE ~[9E

    四、動態執行

    &{4ph-sz lM3V

    4A7^pvU&F  使用動態執行技術,我們能夠更輕松地編寫出GetSortedShippers存儲過程。使用這種方法,我們只需動態地構造出SELECT語句,然后用EXEC()命令執行這個SELECT語句。假設傳遞給存儲過程的參數是列的名字,存儲過程可以大大縮短:軟件測試技術網8^%WC@L

    :[ ?B%V'w  ALTER PROC GetSortedShippers軟件測試技術網;ye:uj+M"r n'S

    軟件測試技術網@'~N5S-pFL5p i

      @ColName AS sysname

    ,t|5r zAkg 軟件測試技術網 }m/h"m7`

      AS軟件測試技術網b3f Q%I[S7o

    }#j"P1LC*_ J!X  EXEC('SELECT * FROM Shippers ORDER BY ' + @ColName)軟件測試技術網 yY ~,b4v Q-}h*g)@vz

    _ d|`6S%LBC:x  在SQL Server 2000和7.0中,你可以用系統存儲過程sp_ExecuteSQL替代Exec()命令。BOL說明了使用sp_ExecuteSQL比使用Exec()命令更有利的地方。一般地,如果滿足以下三個條件,你能夠在不授予存儲過程所涉及對象權限的情況下,授予執行存儲過程的權限:

    wr4f+\*`5|RM

    g%M Oy}5BR$vD  首先,只使用Data Manipulation Language(DML)語言(即SELECT,INSERT,UPDATE,DELETE);其次,所有被引用的對象都有與存儲過程同樣的所有者;第三,沒有使用動態命令。軟件測試技術網GSZ"TF\2i)v'w9j!t

    軟件測試技術網R"mDV]

      上面的存儲過程不能滿足第三個條件。在這種情況下,你必須為所有需要使用存儲過程的用戶和組顯式地授予Shippers表的SELECT權限。如果這一點可以接受的話,一切不存在問題。類似地,你可以修改存儲過程,使它接受一個列號參數,如Listing 8所示。

    .C 老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>