Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server INSERT EXEC语句不能嵌套错误_Sql Server_Stored Procedures - Fatal编程技术网

Sql server INSERT EXEC语句不能嵌套错误

Sql server INSERT EXEC语句不能嵌套错误,sql-server,stored-procedures,Sql Server,Stored Procedures,我有两个存储过程,正在将一个存储过程的结果集插入sql server 2012中的表中。然而,我得到了这两个错误,我不知道如何解决它们。 第一个错误:无法嵌套INSERT EXEC语句。 第二个错误:插入错误:提供的值的列名或数量与表定义不匹配 Here is my stored procedure code, USE [my_DB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- =========================

我有两个存储过程,正在将一个存储过程的结果集插入sql server 2012中的表中。然而,我得到了这两个错误,我不知道如何解决它们。 第一个错误:无法嵌套INSERT EXEC语句。 第二个错误:插入错误:提供的值的列名或数量与表定义不匹配

Here is my stored procedure code,

USE [my_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_1] 
@Week int = 1,
@Year int = 2014
AS
BEGIN
declare @current_week int
set @current_week = datepart (week, getdate()) 
while @Week <= @current_week
begin
truncate table [my_DB].[dbo].[tb_name]
insert into [my_DB].[dbo].[tb_name]
exec sp_2 @Week,@Year
select @Week as Week_Number,* from [my_DB].[dbo].[tb_name] (nolock)
set @Week = @Week + 1
end
END

Here is what I am trying to do when I am getting the errors.

insert into tb_name exec dbo.sp_1 @Week=1, @Year=2014

Any ideas would be helpful.

Thanks.
这是我的存储过程代码,
使用[我的数据库]
去
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
-- =============================================
--作者:
--创建日期:
--说明:
-- =============================================
改变程序[dbo]。[sp_1]
@周int=1,
@年份int=2014年
作为
开始
声明@current_week int
设置@current\u week=datepart(week,getdate())

而@Week能否提供tb_名称的模式和sp_2的定义?此外,过程嵌套也没有解决方法——您需要用另一种方法(函数可以是其中任何一种的选项)检查该表中的列数以及从该存储过程返回的列数。Insert和Exec语句可以嵌套。将truncate语句放在一个单独的过程中,并在begin end block中调用该过程,而不是执行此truncate语句。如果我在表中添加一个新列以匹配结果,它仍然会给我相同的错误。您能否更改sp_2,以便不必在此处强制使用while循环来插入数据?在我看来,问题在于sp_2无法处理多组数据。您的循环构造似乎也有一些严重的问题。在循环的每次迭代中,您都将Week变量设置为相同的值。为什么是诺洛克?您知道该提示的所有后果吗?sp_2提供了适当的结果。我认为问题在于我试图使用insert exec两次。一次在存储过程中,另一次在尝试从存储过程向表中插入数据时。有什么办法可以解决这个问题吗?