#sql-server #sql-server-2008 #stored-procedures #resultset
#sql-server #sql-server-2008 #хранимые процедуры #набор результатов
Вопрос:
У меня есть процедура с именем Insert, и код выглядит следующим образом:
Create procedure Gen_insert
As
BEGIN
create table #temp
( insert_stmt varchar(max) )
insert into #temp
EXEC Generate_Insert @Table = 'Admin'
insert into #temp
EXEC Generate_Insert @Table = 'Impas'
insert into #temp
EXEC Generate_Insert @Table = 'Asui'
insert into #temp
EXEC Generate_Insert @Table = 'Alstd'
select * from #temp
End
Когда я его выполняю, я получаю следующую ошибку:
Msg 8164, Level 16, State 1, Procedure Gen_Insert, Line 73
An INSERT EXEC statement cannot be nested.
Кто-нибудь может мне помочь.
Комментарии:
1. с какой стати вы бы назвали свой процесс чем-то вроде
INSERT
?2. с какой стати вы не делаете правильные вещи и пишете вставки, а не используете общую процедуру вставки?
Ответ №1:
An INSERT EXEC statement cannot be nested.
Сообщение об ошибке довольно четкое. Вы вставляете ВСТАВКУ… EXEC. инструкции. Либо вызываемые вами процедуры ( Generate_Insert
) снова используют INSERT … EXEC или вызывающая insert
процедура использует его при ВСТАВКЕ … EXEC. Только вы можете определить, что это так. Как правило, INSERT … Следует избегать EXEC из-за этой и других проблем.