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

Откуда: Msk
Сообщений: 582
подскажите, пожалуйста, как передать параметры в EXEC sp_executesql @sql_zapros, @d1, @d
DECLARE @d1 DATETIME
DECLARE @d2 DATETIME
SET @d1 = '20130101'
SET @d2 = '20130701'

DECLARE @sql_zapros NVARCHAR(4000)
SET @sql_zapros = 
    '    
INSERT INTO proverka_cb
SELECT tt.datetrn,
       tt.STRACCOUNT,
       0.00,
       0.00,
       tt.saldo_income,
       0.00,
       tt.oborot_db_outcome,
       0.00,
       tt.oborot_cr_outcome,
       0.00,
       0.00,
       0.00,
       ISNULL(tt.saldo_outcome, tt.saldo_income) AS saldo_outcome,
       0.00
FROM   (
           SELECT clnd.datetrn,
                  oa.ID_ACCOUNT,
                  oa.STRACCOUNT,
                  (
                      SELECT os1.saldo
                      FROM   OD_SALTRN0 os1
                      WHERE  os1.DATE_TRN <= clnd.DATETRN -1
                             AND os1.DATE_NEXT > clnd.DATETRN -1
                             AND os1.ID_ACCOUNT = oa.ID_ACCOUNT
                  ) AS saldo_income,
                  os.SALDO AS saldo_outcome,
                  ISNULL(os.OBOROT_DB, 0) AS oborot_db_outcome,
                  ISNULL(os.OBOROT_CR, 0) AS oborot_cr_outcome
           FROM   OD_ACCOUNTS0 oa
                  CROSS JOIN calendar clnd
                  LEFT JOIN OD_SALTRN0 os
                       ON  os.ID_ACCOUNT = oa.ID_ACCOUNT
                       AND os.date_trn = clnd.DATETRN
           WHERE  oa.ACTIV = 1
                  AND oa.ID_CURRENCY = 810
                  AND clnd.datetrn >= @d1 --каждый день в периоде
                  AND clnd.datetrn <= @d2
                  AND oa.ID_ACCOUNT = 175250
       ) tt'
       
EXEC sp_executesql @sql_zapros, @d1, @d2
23 авг 13, 12:43    [14747063]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
Glory
Member

Откуда:
Сообщений: 104760
NewIvanovec
как передать параметры в EXEC sp_executesql @sql_zapros, @d1, @d

согласно документированному синтаксису не пробовали ?
23 авг 13, 12:49    [14747099]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,

опаздываю, подскажите конкретнее
23 авг 13, 12:54    [14747138]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
iap
Member

Откуда: Москва
Сообщений: 47051
NewIvanovec
Glory,

опаздываю, подскажите конкретнее
http://msdn.microsoft.com/ru-ru/library/ms188001(v=sql.100).aspx
23 авг 13, 12:57    [14747169]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
А задлянафига здесь нужна sp_executesql?!
23 авг 13, 13:35    [14747418]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
Glory
Member

Откуда:
Сообщений: 104760
pkarklin
А задлянафига здесь нужна sp_executesql?!

Ну так ТС опаздывает куда то. По всей видимости нет времени ни на чтение документации, ни на написание нормального кода.
23 авг 13, 13:37    [14747434]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
pkarklin
А задлянафига здесь нужна sp_executesql?!

мне нужно несколько раз выполнить запрос.

чтобы не копировать каждый раз текст запроса, который не изменяется, а менять только переменные - поэтому sp_executesql
23 авг 13, 17:45    [14749089]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
serpentariy
Member

Откуда:
Сообщений: 265
NewIvanovec,

А хранимую процедуру не судьба использовать?
23 авг 13, 18:49    [14749328]     Ответить | Цитировать Сообщить модератору
 Re: параметры  [new]
Какие такие процедуры?
Guest
А почему не так?

DECLARE @d1 DATETIME
DECLARE @d2 DATETIME
SET @d1 = '20130101'
SET @d2 = '20130701'

 
INSERT INTO proverka_cb
SELECT tt.datetrn,
       tt.STRACCOUNT,
       0.00,
       0.00,
       tt.saldo_income,
       0.00,
       tt.oborot_db_outcome,
       0.00,
       tt.oborot_cr_outcome,
       0.00,
       0.00,
       0.00,
       ISNULL(tt.saldo_outcome, tt.saldo_income) AS saldo_outcome,
       0.00
FROM   (
           SELECT clnd.datetrn,
                  oa.ID_ACCOUNT,
                  oa.STRACCOUNT,
                  (
                      SELECT os1.saldo
                      FROM   OD_SALTRN0 os1
                      WHERE  os1.DATE_TRN <= clnd.DATETRN -1
                             AND os1.DATE_NEXT > clnd.DATETRN -1
                             AND os1.ID_ACCOUNT = oa.ID_ACCOUNT
                  ) AS saldo_income,
                  os.SALDO AS saldo_outcome,
                  ISNULL(os.OBOROT_DB, 0) AS oborot_db_outcome,
                  ISNULL(os.OBOROT_CR, 0) AS oborot_cr_outcome
           FROM   OD_ACCOUNTS0 oa
                  CROSS JOIN calendar clnd
                  LEFT JOIN OD_SALTRN0 os
                       ON  os.ID_ACCOUNT = oa.ID_ACCOUNT
                       AND os.date_trn = clnd.DATETRN
           WHERE  oa.ACTIV = 1
                  AND oa.ID_CURRENCY = 810
                  AND clnd.datetrn >= @d1 --каждый день в периоде
                  AND clnd.datetrn <= @d2
                  AND oa.ID_ACCOUNT = 175250
       ) tt   
26 авг 13, 10:51    [14754599]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить