Asp.Net(C#)+Sql Server三層架構下資料存取方案(二)

來源:互聯網
上載者:User
asp.net|server|架構|資料 預存程序:

/**********************************

功能:根據一定條件讀取功能記錄

作者:Rexsp

建立日期:2004-01-13

修改者:

修改日期:

**********************************/

ALTER PROCEDURE GetScoreSetting

(

@ScoreSettingID INT=-1, ---設定ID

@FunctionID INT=-1, ---功能ID

@OperationID INT=-1, ---操作ID

@RoleTypeID INT=-1, ---角色類型

@BBSTypeID INT=-1, ---版塊類型

@Score INT=-1, ---積分設定

@BB INT=-1, ---幣幣設定

@BuyType INT=-1, ---購買類型 0:不是購買類型 1:一次性購買 2:反覆購買

@FunctionState INT=-1 ---功能狀態

)

AS

SET NOCOUNT ON

DECLARE @strSQL NVARCHAR(1000)

SET @strSQL = 'SELECT * FROM [ScoreSetting] WHERE @ckScoreSettingID = @ckScoreSettingID'

--- Add KeyWords Begin ---

IF @ScoreSettingID<> -1

BEGIN

SET @strSQL = @strSQL + ' AND ScoreSettingID= @ckScoreSettingID'

END

IF @FunctionID<> -1

BEGIN

SET @strSQL = @strSQL + ' AND FunctionID= @ckFunctionID'

END

IF @OperationID<>-1

BEGIN

SET @strSQL = @strSQL + ' AND OperationID = @ckOperationID'

END

IF @RoleTypeID<>-1

BEGIN

SET @strSQL = @strSQL + ' AND RoleTypeID = @ckRoleTypeID'

END

IF @BBSTypeID<>-1

BEGIN

SET @strSQL = @strSQL + ' AND BBSTypeID = @ckBBSTypeID'

END

IF @Score<>-1

BEGIN

SET @strSQL = @strSQL + ' AND Score = @ckScore'

END

IF @BB<>-1

BEGIN

SET @strSQL = @strSQL + ' AND BB= @ckBB'

END

IF @BuyType<>-1

BEGIN

SET @strSQL = @strSQL + ' AND BuyType= @ckBuyType'

END

IF @FunctionState<>-1

BEGIN

SET @strSQL = @strSQL + ' AND FunctionState= @ckFunctionState'

END

--- Add Where Key Word ---

--- Run SQL Begin ---

EXECUTE sp_executesql @strSQL,

N' @ckScoreSettingID INT,

@ckFunctionID INT,

@ckOperationID INT,

@ckRoleTypeID INT,

@ckBBSTypeID INT,

@ckScore INT,

@ckBB INT,

@ckBuyType INT,

@ckFunctionState INT',

@ckScoreSettingID=@ScoreSettingID,

@ckFunctionID=@FunctionID,

@ckOperationID = @OperationID,

@ckRoleTypeID = @RoleTypeID,

@ckBBSTypeID = @BBSTypeID,

@ckScore = @Score,

@ckBB = @BB,

@ckBuyType = @BuyType,

@ckFunctionState = @FunctionState

--- Run SQL End ---



一點說明:

此預存程序會根據資料層的類有沒有傳遞相應的參數值進來而動態建立查詢語句,然後用系統內建的預存程序執行sql語句,用系統預存程序執行sql語句的好處是可以自動逸出字元。而動態建立查詢語句的好處,就非常大了,這會省下我們寫很多種條件判斷,尤其是對那些欄位比較多的表來講,一個排列組合下來的情況太多了,而利用預存程序動態建立sql語句所作的判斷數和欄位數基本上是一致的,這裡會給入參賦初始值,如果不等於初始值就說明資料層類有傳遞參數進來,這樣就加上相應條件字元的查詢條件。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.