Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по EXEC  [new]
comtehno
Member

Откуда: Архангельск
Сообщений: 131
Вопрос следующего содержания, есть у меня процедура:
CREATE PROCEDURE [dbo].[GET_OPERATIONS](
@BEGIN DATE,
@END DATE,
@TYPE NVARCHAR(4000),
@USER NVARCHAR(4000),
@DRIVER NVARCHAR(4000),
@CONTRAGENT NVARCHAR(4000),
@PHONE NVARCHAR(4000)
)
AS
DECLARE @PAR_BEGIN DATE
DECLARE @PAR_END DATE
DECLARE @PAR_STRING NVARCHAR(4000)

DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'SELECT *
FROM OPERATION_HANDLE H
WHERE
H.DATA_CREATE >= @PAR_BEGIN AND H.DATA_CREATE <= @PAR_END'
IF @TYPE <> '' SET @SQL = @SQL + ' AND TYPEPAY IN (' + @TYPE + ')'
IF @USER <> '' SET @SQL = @SQL + ' AND UID IN (' + @USER + ')'
IF @DRIVER <> '' SET @SQL = @SQL + ' AND DID IN (0,' + @DRIVER + ')'
IF @CONTRAGENT <> '' SET @SQL = @SQL + ' AND CID IN (' + @CONTRAGENT + ')'
IF @PHONE <> '' SET @SQL = @SQL + ' AND PHONE IN (' + @PHONE + ')'
SET @PAR_STRING = N'@PAR_BEGIN DATETIME, @PAR_END DATETIME'
EXECUTE SP_EXECUTESQL @SQL, @PAR_STRING, @PAR_BEGIN = @BEGIN, @PAR_END = @END
GO

Для переменных @TYPE,@USER,@DRIVER,@CONTRAGENT где у меня перечислены ID через запятую все работает, проблема с параметром @PHONE, дело в том, что тут у меня перечислены телефоны в кавычках через запятую, и процедура не отрабатывает, как быть? Каким образом можно отработать перечислениня нецифровых объектов, кстати подобная процедура на оракле отрабатывает на "ура" неужели в MSSQL нет решения?
12 авг 11, 19:05    [11112339]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по EXEC  [new]
comtehno
Member

Откуда: Архангельск
Сообщений: 131
Забыл написать, простой запрос:
SELECT * FROM OPERATION_HANDLE H WHERE h.TYPEPAY IN (1,2,3) AND h.UID IN (1) AND h.PHONE IN ('xxxxxxxx','xxxxxxxy')
отрабатывает
12 авг 11, 19:09    [11112346]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по EXEC  [new]
comtehno
Member

Откуда: Архангельск
Сообщений: 131
Господа, вопрос снят. Кому интересно, решилось, изменением строки
IF @PHONE <> '' SET @SQL = @SQL + ' AND PHONE IN (' + @PHONE + ')', на
IF @PHONE <> '' SET @SQL = @SQL + ' AND PHONE IN (''' + @PHONE + ''')'
и формированием строки параметров в программе типа
s := s + QuotedStr(',') + s1
12 авг 11, 19:23    [11112400]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить