Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
NewIvanovec Member Откуда: Msk Сообщений: 582 |
подскажите, пожалуйста, как передать параметры в EXEC sp_executesql @sql_zapros, @d1, @dDECLARE @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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
согласно документированному синтаксису не пробовали ? |
||
23 авг 13, 12:49 [14747099] Ответить | Цитировать Сообщить модератору |
NewIvanovec Member Откуда: Msk Сообщений: 582 |
Glory, опаздываю, подскажите конкретнее |
23 авг 13, 12:54 [14747138] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47051 |
|
||
23 авг 13, 12:57 [14747169] Ответить | Цитировать Сообщить модератору |
pkarklin Member Откуда: Москва (Муром) Сообщений: 74925 |
А задлянафига здесь нужна sp_executesql?! |
23 авг 13, 13:35 [14747418] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Ну так ТС опаздывает куда то. По всей видимости нет времени ни на чтение документации, ни на написание нормального кода. |
||
23 авг 13, 13:37 [14747434] Ответить | Цитировать Сообщить модератору |
NewIvanovec Member Откуда: Msk Сообщений: 582 |
мне нужно несколько раз выполнить запрос. чтобы не копировать каждый раз текст запроса, который не изменяется, а менять только переменные - поэтому sp_executesql |
||
23 авг 13, 17:45 [14749089] Ответить | Цитировать Сообщить модератору |
serpentariy Member Откуда: Сообщений: 265 |
NewIvanovec, А хранимую процедуру не судьба использовать? |
23 авг 13, 18:49 [14749328] Ответить | Цитировать Сообщить модератору |
Какие такие процедуры?
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 | ![]() |