Выполняя несколько вспомогательных SP в главном SP, я хочу завершить результат процедуры главного хранилища в одном наборе данных (строке) для моего API, а не в нескольких сетках - PullRequest
0 голосов
/ 08 июля 2019

Я использую несколько хранимых процедур (тип возврата табличный, только 1 строка в результате) в основной хранимой процедуре '' '

CREATE PROCEDURE [dbo].[MAster_sp]
(@param INT) 
as
BEGIN

EXEC [dbo].[sp1] @param 
EXEC [dbo].[sp2] @param
.
.
.
.
.

END

' ''

Тогда вывод выглядит так

sp1 Output
Male_Emp_Count       Female_Emp_Count 
--------------      ---------------- 
1                    0     



Sp2 Output
empId               empJoiningDate                            
-----------         --------------
17                  2019-07-10    

.,,,.

Я хочу, чтобы в качестве ответа на мой API получилась одна строка набора данных,

, когда я попытался вставить переменную в таблицу, тогда я столкнулся с "INSERTОператор EXEC не может быть вложенным. " Что это за ошибка и как ее обработать? Я попробовал Google, но не нашел соответствующей статьи или информации, которая бы помогала мне разобраться в этой проблеме.

CREATE PROCEDURE [dbo].[MAster_sp]
(@param INT) 
as
BEGIN
CREATE TABLE #tempMainTbl (c1 int null,c2 int null,c3 int null,c4 int null,c5 int null)
INSERT INTO #tempMainTbl (c1,c2,c3)
EXEC [dbo].[sp1] @param 

EXEC [dbo].[sp2] @param
.
.
.
.
.
SELECT * from #tempMainTbl 
END

ОШИБКА

Сообщение 8164, уровень 16, состояние 1, процедура dbo. [Sp1], строка 33 [строка запуска пакета 8] Инструкция INSERT EXEC не может быть вложенной.

#Actual Result that i got now

sp1 Output
Male_Emp_Count Female_Emp_Count 
-------------- ---------------- 
1              0                

Sp2 Output
empId       empJoiningDate                            
----------- --------------
17          2019-07-10   


#Expected Result

Male_Emp_Count       Female_Emp_Count     empId      empJoiningDate                                
--------------       ----------------     -----      --------------
1                     0                    17         2019-07-10

все хранимые процедуры выводятся в одном наборе данных (строка)

1 Ответ

0 голосов
/ 08 июля 2019

Так что эта проблема связана с наличием хранимой процедуры со вставкой в , вызываемой другой хранимой процедурой, которая вставляет в .

.Единственное решение на самом деле заключается в слиянии процедур.

Вот то, что вы, вероятно, имеете прямо сейчас: MAster_sp:

INSERT INTO #tempMainTbl (c1,c2,c3)
EXEC [dbo].[sp1] @param 

sp1:

Insert into #someothertemptable
exec someotherprocedure @param

Вы просто не можете сделать это, к сожалению, на сервере SQL.Вот почему и обходной путь: https://www.sqlservercentral.com/forums/topic/how-to-resolve-an-insert-exec-statement-cannot-be-nested-errorproblem

Вот аналогичный вопрос в другом посте: Ошибки: «Оператор INSERT EXEC не может быть вложенным».и «Невозможно использовать инструкцию ROLLBACK в инструкции INSERT-EXEC».Как это решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...