2010-08-19 58 views

回答

1

利用:SP_EXECUTESQL

+0

礦是不是存儲過程這是一個參數化查詢 – NoviceToDotNet 2010-08-19 09:59:43

+0

轉到鏈接,看到了DOUCMENT及其所有人都在談論EXCUETING動態參數QUERY – 2010-08-19 10:00:54

+0

你是正確的,但請禮貌;) – abatishchev 2010-08-20 07:33:52

1

如何像

DECLARE @Table TABLE(
     val1 VARCHAR(20), 
     val2 VARCHAR(20) 
) 

DECLARE @Param VARCHAR(20) 

INSERT INTO @Table SELECT '1','2' 
SELECT * 
FROM @Table 
WHERE (@Param IS NULL OR val1 = @Param) 

然而,這會降低性能。 我會建議,當你建立你的動態查詢時,不要將參數添加到where子句,如果它不是需要的。

1

只有可能:
編寫查詢所有的參數包括,但不是寫一個普通的

WHERE 
    [email protected] 
    and [email protected] 
    ..... 

WHERE 
    (@param1 is null or [email protected]) 
    and (@param2 is null or [email protected]) 
    ... 

WHERE 
    field1=isnull(@param1,field1) 
    and field2=isnull(@param2,field2) 
    ... 

但如果出現嚴重的性能問題,請考慮爲每個單個案例編寫查詢。
只有當這個查詢在小表上每秒鐘執行許多次時,纔有理由完整地寫它,使用sp_prepare/sp_execute作爲它,所以它在這種情況下運行速度最快。

+0

首先讓我知道你如何格式化在評論中寫的代碼,以便我可以以格式化的形式向您發送我的代碼 – NoviceToDotNet 2010-08-19 10:04:20

+0

有一個JS在本網站上運行,它會自動格式化它。在寫出問題或答案時,請在每行至少加上4個空格(不適用於評論)。或者你可以在這個網站上使用WYSIWYG編輯器的工具面板。我手動添加的空格/標籤,因爲該網站不管理這些空間/標籤。 – AlexanderMP 2010-08-19 10:07:15

+0

我還能做些什麼來保持性能 我想知道一些代碼,請按照以上方法讓我知道嗎? – NoviceToDotNet 2010-08-19 16:51:35