|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
Всем привет. Столкнулся со следующей проблемой. База данных имеет хранимую процедуру. Процедура работает без проблем, выводит все необходимые данные, которые мне необходимо вставить дальше к примеру во временную таблицу. Внутри процедуры уже есть INSERT ... EXEC, по этой причине я не могу воспользоваться вставкой результатов процедуры во временную таблицу, т.к. получу ошибку: An INSERT EXEC statement cannot be nested. Hашел решение данной ситуации -> http://www.t-sql.ru/post/An_INSERT_EXEC_statement_cannot_be_nested.aspx Из данной ссылки наиболее подходящим, как по мне взял 4-й способ, но при его применении, а также при других, сталкиваюсь со следующей ошибкой: Column name or number of supplied values does not match table definition. 1) Название столбцов таблицы в хранимой процедуре идентично названию столбцов таблицы в создаваемой переменной. 2) Тип данных также идентичен. 3) Порядок столбцов также есть аналогичным. Ниже прикрепляю скриншот на котором указано две таблица из процедуры и таблица из переменной. Каким образом можно сделать дебаг, чтобы понять в чем конкретно есть не сходство? Возможно какие то другие варианты решения данной ситуации. Буду благодарен за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 15:54 |
|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
1. Костыли не обязаны работать. 2. Чем придумывать непромокаемый порох, перепишите процедуру под заполнение ВНЕШНЕЙ таблицы. Той же #All. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 16:15 |
|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
Caxa_ASS, у вас ошибка скорее всего связанна с полем identity. предполагаю что в процедуре у вас результирующий набор select * from #All при стейтменте insert into @t exec у вас количество столбцов должно быть меньше на 1 поскольку значения для поля Id будут присвоены автоматически, поэтому в результирующем наборе не должно быть колонки под этот столбец. а так в целом aleks222 правильно сказал - костыли с insert exec всегда могут стрельнуть, поменяет кто нибудь вашу процедуру, добавят новый столбец в выходной набор и опять будут пляски с поиском виноватого. не ленитесь для инструкций insert указывать весь список столбцов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 17:16 |
|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
а разве xp_cmdshell по стандарту не возвращает только одну колонну с названием [output] ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 17:47 |
|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
felix_ff, 1) 'у вас ошибка скорее всего связанна с полем identity.' - возможно, но для теста, a) удалил столбец Id в таблице с процедурой, так и в таблице с переменной, без результата; б) удалил только из таблицы в переменной, так же без результата. 2) 'предполагаю что в процедуре у вас результирующий набор select * from #All' - если я Вас правильно понимаю, то под словом результирующий набор - это вывод таблицы с данными, т.е. то, что я хочу чтобы выводилось, да, в конце процедуры: select * from #All drop table #All для теста, убрал * вписал все столбцы, без результатно. 3) 'не ленитесь для инструкций insert указывать весь список столбцов' - сама процедура это набор процедур с INSERT во временную таблицу т.е. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
4) 'не ленитесь для инструкций insert указывать весь список столбцов' - в процедурах которые входят в состав процедур dbo.All_data, для INSERT указаны именно названия столбцов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 17:49 |
|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 17:50 |
|
Column name or number of supplied values does not match table definition.
|
|||
---|---|---|---|
#18+
Caxa_ASS felix_ff, 1) 'у вас ошибка скорее всего связанна с полем identity.' - возможно, но для теста, a) удалил столбец Id в таблице с процедурой, так и в таблице с переменной, без результата; б) удалил только из таблицы в переменной, так же без результата. я вам писал о том что в процедуре у вас результирующий набор должен возвразаться так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
а в инструкции которую вы используете как insert exec должны быть указаны столбцы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 20:09 |
|
|
start [/forum/topic.php?fid=46&msg=40068133&tid=1684736]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 544ms |
0 / 0 |