powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический запрос
3 сообщений из 3, страница 1 из 1
Динамический запрос
    #32014742
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!!!
Вопрос: как в sp создать динамический запрос в зависимости от входных условий??
Например, в Дельфях в зав-ти от каких-либо условий можно цеплять к строке запроса соответствующие "where", "and", "join" и так далее... и потом посылать строку запроса серверу.
А как это сделать в sp исходя из входных параметров?? Можно было бы опять же строке присвоить текст запроса, но потом то как его выполнить???
Спасибо.
...
Рейтинг: 0 / 0
Динамический запрос
    #32014748
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
См. BOL execute, sp_executesql
...
Рейтинг: 0 / 0
Динамический запрос
    #32014798
Olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]