Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как добавить в запрос INSERT INTO имя таблицы в переменной ? / 25 сообщений из 36, страница 1 из 2
18.11.2002, 12:03:53
    #32068896
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
...
Рейтинг: 0 / 0
18.11.2002, 12:07:04
    #32068897
Trong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Через сформировать строку
Код: plaintext
@sql = 'insert into ' + @var + '...'
и потом
Код: plaintext
exec(@sql)
...
Рейтинг: 0 / 0
18.11.2002, 12:13:04
    #32068898
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Alter TRIGGER updateHold ON Incoming 
FOR UPDATE, INSERT
AS 
DECLARE @SignalLOG_Date nchar( 255 )

SET @SignalLOG_Date='SignalLog'+substring(convert(char( 8 ),getdate(), 12 ), 3 , 2 )+substring(convert(char( 8 ),getdate(), 12 ), 1 , 2 )

IF UPDATE (OnHoldDate) 

   BEGIN 
      if OBJECT_ID('Almond..@SignalLOG_Date','U') is Null EXEC sp_Create_SignalLog
         
              EXEC( 'INSERT INTO'+@SignalLOG_Date+'(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)') 
              SELECT SignalID, getdate(), 'Send On Hold', OperCode, '',  0  
              from inserted 
         
      
   END 
Что-то у меня так не выходит . Акак можно сделать debug trigger ?
...
Рейтинг: 0 / 0
18.11.2002, 13:28:45
    #32068950
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
ALTER  TRIGGER updateHold ON Incoming 
FOR UPDATE, INSERT
AS 
DECLARE @SignalLOG_Date varchar( 255 )

SET @SignalLOG_Date='SignalLog'+substring(convert(char( 8 ),getdate(), 12 ), 3 , 2 )+substring(convert(char( 8 ),getdate(), 12 ), 1 , 2 )

IF UPDATE (OnHoldDate) 

   BEGIN 
   -- if OBJECT_ID(%af_src_str_1,%af_src_str_2) is Null 
 
    --   BEGIN
 
     --   exec(%af_src_str_3+@SignalLOG_Date + %af_src_str_4)
 
      -- END
 
   --ELSE
 
    --   BEGIN
 
     SET @SignalLOG_Date='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)'  
         
              EXEC( @SignalLOG_Date)
              SELECT SignalID, getdate(), 'Send On Hold', OperCode, '',  0  
              from inserted 
        
      
   END 



GO


Выдаёт ошибку Incorrect syntax ')' .Что бы это могло быть ?
...
Рейтинг: 0 / 0
18.11.2002, 13:33:40
    #32068954
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Вы бы посмотрели что за текст в @SignalLOG_Date получается... там наверняка ошибка и есть.
...
Рейтинг: 0 / 0
18.11.2002, 13:37:28
    #32068959
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Я проверил так

Код: plaintext
1.
2.
3.
4.
DECLARE @SignalLOG_Date varchar( 255 )
DECLARE @SignalLOG varchar( 255 )
SET @SignalLOG_Date='SignalLog'+substring(convert(char( 8 ),getdate(), 12 ), 3 , 2 )+substring(convert(char( 8 ),getdate(), 12 ), 1 , 2 )
set @SignalLOG='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)'
SELECT  @SignalLOG

String нормальный INSERT INTO SignalLog1102(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)
...
Рейтинг: 0 / 0
18.11.2002, 13:38:11
    #32068962
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
SET @SignalLOG_Date='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)'

EXEC( @SignalLOG_Date)


И что Вы туда вставляете? Где select ? Или Values?
...
Рейтинг: 0 / 0
18.11.2002, 13:40:25
    #32068963
Trong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Неа, не нормальный :))
Код: plaintext
1.
EXEC( 'INSERT INTO'+@SignalLOG_Date+'(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)' + ' SELECT SignalID, getdate(), 'Send On Hold', OperCode, '', 0 ')

вот так надо ...
...
Рейтинг: 0 / 0
18.11.2002, 13:41:43
    #32068964
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
В предыдущем коде есть
Код: plaintext
1.
2.
3.
4.
   SET @SignalLOG='INSERT INTO '+ @SignalLOG_Date + ' (SignalID,ActionDate,Action,OperCode,SignalNote,LogID)'  
         
              EXEC( @SignalLOG)
              SELECT SignalID, getdate(), 'Send On Hold', OperCode, '',  0  
              from inserted 
...
Рейтинг: 0 / 0
18.11.2002, 13:42:10
    #32068966
Trong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Ну и кавычки в тексте заменить с ' на " ' ' " ... забыл указать сразу.
...
Рейтинг: 0 / 0
18.11.2002, 13:46:10
    #32068969
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Код: plaintext
1.
2.
3.
4.
SET @SignalLOG='INSERT INTO '+ @SignalLOG_Date + ' (SignalID,ActionDate,Action,OperCode,SignalNote,LogID)'  
         
              EXEC( @SignalLOG)
              SELECT SignalID, getdate(), 'Send On Hold', OperCode, '', 0  
              from inserted 


Да ты че, Kesha. !! :()

Exec то отдельно выполняется. Не пробовал гвозди кому-нибудь в голову забивать? Так же несовместимо с жизнью, как и этот insert :))
...
Рейтинг: 0 / 0
18.11.2002, 14:48:32
    #32069008
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
2Kesha
Глядя на ваш динамический запрос, меня терзают смутные сомнения
А зачем вы ведете отдельную таблицу на каждый месяц/год ?
Не проще ли заносить все данные в одну таблицу, которая имеет поле для даты занесения ?
...
Рейтинг: 0 / 0
18.11.2002, 15:28:11
    #32069043
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Потому что сигналов у меня может быть 10 в секунду
...
Рейтинг: 0 / 0
18.11.2002, 15:30:17
    #32069044
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
EXEC( 'INSERT INTO '+@SignalLOG_Date+'(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)' + ' SELECT SignalID, getdate(),"Send On Hold", '+'OperCode'+','+'" "'+',0')

Может я сегодня плохо соображаю , но у меня ничего не выходит
...
Рейтинг: 0 / 0
18.11.2002, 16:06:33
    #32069088
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Trong помоги пожалуйста
...
Рейтинг: 0 / 0
18.11.2002, 16:11:08
    #32069091
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Код: plaintext
1.
2.
3.
SELECT SignalID, getdate() AS f1, 'Send On Hold' AS f2, OperCode, '' AS f3,  0   AS f4 INTO #xxx from inserted 
SET @SignalLOG_Date='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID) 
SELECT SignalID, f1, f2, OperCode, f3, f4 FROM #xxx'  
EXEC( @SignalLOG_Date)
...
Рейтинг: 0 / 0
18.11.2002, 16:11:15
    #32069092
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Если я все правильно понял, то должно быть так:
Код: plaintext
1.
2.
EXEC ('INSERT INTO '+@SignalLOG_Date+'(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)' + 
' SELECT SignalID, getdate(),"Send On Hold", '+'OperCode'+','+'" "'+',0 from inserted')

Вы пропустили from inserted
...
Рейтинг: 0 / 0
18.11.2002, 16:22:46
    #32069106
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Invalid object Inserted ?
...
Рейтинг: 0 / 0
18.11.2002, 16:33:27
    #32069121
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
ох, вот они минусы динамических запросов, вот Glory правильней написал, сначала из inserted в какую то временную скинуть надо, а потом уже с ней и работать, а версия SQL у Вас какая?
...
Рейтинг: 0 / 0
18.11.2002, 16:38:34
    #32069131
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
SQL 2000
...
Рейтинг: 0 / 0
18.11.2002, 16:46:11
    #32069138
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Если как у Glory то выдаёт Column f3 has invalid width ; 0.
...
Рейтинг: 0 / 0
18.11.2002, 16:58:35
    #32069154
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Попробуйте так (хотя это тоже самое):
Код: plaintext
1.
2.
3.
4.
5.
SELECT SignalID, 'f1' = getdate(), 'f2' = 'Send On Hold', OperCode, 'f3' = '', 'f4' =  0  INTO #xxx from inserted

SET @SignalLOG_Date='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID) 
SELECT SignalID, f1, f2, OperCode, f3, f4 FROM #xxx' 

EXEC( @SignalLOG_Date)
...
Рейтинг: 0 / 0
18.11.2002, 17:03:18
    #32069161
Kesha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Таже ошибка Column f3 has invalid width ; 0.
...
Рейтинг: 0 / 0
18.11.2002, 17:07:04
    #32069165
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Ну поставь пробел в f3, или cast(null as varchar(100))
...
Рейтинг: 0 / 0
18.11.2002, 17:10:39
    #32069173
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Ну тогда так :))
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create #xxx (
SignalID int,
f1 datetime, 
f2 varchar ( 128 ), 
OperCode varchar ( 32 )  /* не знаю что за тип, поэтому varchar */ , 
f3 varchar ( 128 ), 
f4 int
)
insert into #xxx (SignalID, f1, f2, OperCode, f3, f4)
SELECT SignalID, 
getdate(), 
'Send On Hold', 
OperCode, 
'', 
 0  
from inserted

SET @SignalLOG_Date='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID) 
SELECT SignalID, f1, f2, OperCode, f3, f4 FROM #xxx' 

EXEC( @SignalLOG_Date)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как добавить в запрос INSERT INTO имя таблицы в переменной ? / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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