Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамический запрос
|
|||
|---|---|---|---|
|
#18+
Здравствуйте!!! Вопрос: как в sp создать динамический запрос в зависимости от входных условий?? Например, в Дельфях в зав-ти от каких-либо условий можно цеплять к строке запроса соответствующие "where", "and", "join" и так далее... и потом посылать строку запроса серверу. А как это сделать в sp исходя из входных параметров?? Можно было бы опять же строке присвоить текст запроса, но потом то как его выполнить??? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2001, 13:11 |
|
||
|
Динамический запрос
|
|||
|---|---|---|---|
|
#18+
См. BOL execute, sp_executesql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2001, 06:03 |
|
||
|
Динамический запрос
|
|||
|---|---|---|---|
|
#18+
Primer Dynamic sp: CREATE PROCEDURE sp_example @Language varchar(3) = NULL, @SOrders integer = NULL , @Q varchar(3) etc etc ... ---every parameter may be implemented as check box in Front End ( user interface ) ---put here all your conditional parameters ------ AS DECLARE @SQLQuery varchar(8000) ----eta peremennaia bydet codershat" vec" zaproc , kak char stroka SELECT @SQLQuery = ' SELECT DISTINCT u.UserID as UserID, u.LanguageID' + CASE WHEN @SOrders IS NOT NULL THEN ', count( DISTINCT uo.OrderID ) AS NumberOrders' ELSE '' END + CASE WHEN @QuantityItemPurchased IS NOT NULL THEN ', count( DISTINCT sli.ShoppingListItemId ) AS NbItems' ELSE '' END + ' FROM tbUser u IF( @SOrders IS NOT null) BEGIN IF( @SubmittedNbOrders IS NOT NULL ) BEGIN SELECT @SQLQuery = @SQLQuery + ' HAVING COUNT( DISTINCT uo.OrderID ) ' + CASE @SubmittedCompare WHEN 1 THEN '= ' WHEN 2 THEN '> ' WHEN 3 THEN '< ' ELSE '= ' END + CONVERT( VARCHAR, @SubmittedNbOrders ) IF( @Q IS NOT NULL ) BEGIN SELECT @SQLQuery = @SQLQuery + ' AND COUNT( DISTINCT sli.ShoppingListItemId ) ' + CASE @QuantityCompare WHEN 1 THEN '= ' WHEN 2 THEN '> ' WHEN 3 THEN '< ' ELSE '= ' END + CONVERT( VARCHAR, @QuantityItemPurchased ) END END ELSE BEGIN SELECT @SQLQuery = @SQLQuery + ' HAVING COUNT( DISTINCT sli.ShoppingListItemId ) ' + CASE @QuantityCompare WHEN 1 THEN '= ' WHEN 2 THEN '> ' WHEN 3 THEN '< ' ELSE '= ' END + CONVERT( VARCHAR, @QuantityItemPurchased ) END END etc etc..... ---pishesh" stol"ko yslovii ckol"ko tebe trebyrtcia chtobi proanalizirovat" vce tvoi peremennie , opredelennie v nachale. PRINT( @SQLQuery )----you can see the result of your dynamic built query and can check it ; EXEC( @SQLQuery ) ecli ect" voproci cprashivai ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2001, 13:36 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1825406]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 356ms |

| 0 / 0 |
