2014-01-23 3 views
0

Что этот тип запроса называется (где вы строите строку для создания своего рода временную таблицу и тем, что ее преимущества по сравнению только с помощью временных таблиц?Что вы называете этот вид SQL запроса

SET @sqlstring = 'WITH TEMPProc AS 
    (
    SELECT 
       CustType , 
       [Description] , 
       [ApplyVAT?], 
       [ProduceInvoices?] , 
       [PurchaseSale] , 
       TermsDays , 
       DateTimeLastUpdated, 
       ROW_NUMBER() OVER (Order By ' + @SortExpression + ') As RowNumber 
     FROM dbo.CustomerTypes 
     ) 

     SELECT 
      CustType , 
       [Description] , 
       [ApplyVAT?], 
       [ProduceInvoices?] , 
       [PurchaseSale], 
       TermsDays , 
       DateTimeLastUpdated 
       FROM TEMPProc 
       WHERE 
       ROWNUMBER > ' + CONVERT(VARCHAR,@LowerBand) + 
       ' AND ROWNUMBER <' + CONVERT(VARCHAR,@UpperBand) 
       + ' ORDER BY ' + @SortExpression 

       EXEC sp_executesql @sqlstring 
+0

Google знает ответ: http://msdn.microsoft.com/en-us/library/ms175972.aspx – Joe

+0

@Joe является правильным, он называется CTE, но он очень похож на «производную таблицу», , который вместо того, чтобы вести ваш выбор, существует после «from». –

+1

В зависимости от контекста его можно назвать «потенциальной уязвимостью SQL-инъекции». –

ответ

1

Это динамический SQL.

Он позволяет построить запрос, конструкция которого основана на информации, которая может быть недоступна в момент написания запроса. Например, запрос может воспользоваться преимуществами значений параметров, которые выходят таблицы, которой не было, когда был написан запрос.

Он делает запрос гибким и повторно используемым, а это означает, что вы больше не пишете подобный код снова и снова.

+0

Если вы считаете, что мой вопрос действительно, не могли бы вы проголосовать за него, спасибо еще раз. – connersz

+0

Я немного руководствуюсь http://blog.stackoverflow.com/2011/06/optimizing-for-pearls-not-sand/ в вопросе голосования. Мой порог для голосования по поводу вопроса состоял бы в том, что он сильно заставляет задуматься и побуждает меня узнать что-то новое. Мое вотум доверия в вопросе в этом случае заключалось в том, чтобы попытаться ответить. –

Смежные вопросы