powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как добавить в запрос INSERT INTO имя таблицы в переменной ?
25 сообщений из 36, страница 1 из 2
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068896
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068897
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через сформировать строку
Код: plaintext
@sql = 'insert into ' + @var + '...'
и потом
Код: plaintext
exec(@sql)
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068898
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068950
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068954
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы посмотрели что за текст в @SignalLOG_Date получается... там наверняка ошибка и есть.
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068959
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я проверил так

Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068962
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET @SignalLOG_Date='INSERT INTO '+ @SignalLOG_Date + '(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)'

EXEC( @SignalLOG_Date)


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

вот так надо ...
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068964
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В предыдущем коде есть
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068966
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и кавычки в тексте заменить с ' на " ' ' " ... забыл указать сразу.
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32068969
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069008
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Kesha
Глядя на ваш динамический запрос, меня терзают смутные сомнения
А зачем вы ведете отдельную таблицу на каждый месяц/год ?
Не проще ли заносить все данные в одну таблицу, которая имеет поле для даты занесения ?
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069043
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что сигналов у меня может быть 10 в секунду
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069044
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXEC( 'INSERT INTO '+@SignalLOG_Date+'(SignalID,ActionDate,Action,OperCode,SignalNote,LogID)' + ' SELECT SignalID, getdate(),"Send On Hold", '+'OperCode'+','+'" "'+',0')

Может я сегодня плохо соображаю , но у меня ничего не выходит
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069088
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Trong помоги пожалуйста
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069091
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069092
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я все правильно понял, то должно быть так:
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069106
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Invalid object Inserted ?
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069121
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ох, вот они минусы динамических запросов, вот Glory правильней написал, сначала из inserted в какую то временную скинуть надо, а потом уже с ней и работать, а версия SQL у Вас какая?
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069131
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL 2000
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069138
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если как у Glory то выдаёт Column f3 has invalid width ; 0.
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069154
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте так (хотя это тоже самое):
Код: 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
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069161
Kesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таже ошибка Column f3 has invalid width ; 0.
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069165
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну поставь пробел в f3, или cast(null as varchar(100))
...
Рейтинг: 0 / 0
Как добавить в запрос INSERT INTO имя таблицы в переменной ?
    #32069173
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда так :))
Код: 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
25 сообщений из 36, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как добавить в запрос INSERT INTO имя таблицы в переменной ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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