Sql server 从函数调用主存储过程时,会在DataTable中给出子过程结果
我有一个sql存储过程,它调用另一个sql存储过程。在sql server中执行时,我工作正常。但当我从类中的函数调用时,它返回子过程返回的DataTable。我想返回主过程返回的数据 我的主要程序是:Sql server 从函数调用主存储过程时,会在DataTable中给出子过程结果,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个sql存储过程,它调用另一个sql存储过程。在sql server中执行时,我工作正常。但当我从类中的函数调用时,它返回子过程返回的DataTable。我想返回主过程返回的数据 我的主要程序是: ALTER PROCEDURE [dbo].[StoredProcedure2] @QuaterList varchar(50) = NULL AS BEGIN DECLARE @sql nvarchar(4000) SELECT @sql='SELECT Id, Sugge
ALTER PROCEDURE [dbo].[StoredProcedure2]
@QuaterList varchar(50) = NULL
AS
BEGIN
DECLARE @sql nvarchar(4000)
SELECT @sql='SELECT Id, Suggester, Requester, Date_Created from CRM.dbo.CRM_Doctor_Request WHERE 1=1 '
If (@QuaterList) IS NOT NULL
BEGIN
DECLARE @MonthsList varchar(1000)
EXEC dbo.SPGetMonthsListforMultipleQuaters @QuaterList, @MonthsList OUTPUT
SELECT @MonthsList
SELECT @sql=@sql + ' AND MONTH(Date_Created) in ('
+ SUBSTRING(@MonthsList, 1, LEN(@MonthsList)-1) +')'
END
EXEC sp_executesql @sql, N' @QuaterList varchar(50) ',
@QuaterList
END
子过程SPGetMonthListForMultipleQuaters:
问题解决了。这是因为我写了SELECT@MonthsList,所以它也返回了不需要的内容,而且也造成了问题。所以我把它取下来,问题就解决了 新程序代码为:
ALTER PROCEDURE [dbo].[StoredProcedure2]
@QuaterList varchar(50) = NULL
AS
BEGIN
DECLARE @sql nvarchar(4000)
SELECT @sql='SELECT Id, Suggester, Requester, Date_Created from CRM.dbo.CRM_Doctor_Request WHERE 1=1 '
If (@QuaterList) IS NOT NULL
BEGIN
DECLARE @MonthsList varchar(1000)
EXEC dbo.SPGetMonthsListforMultipleQuaters @QuaterList, @MonthsList OUTPUT
SELECT @sql=@sql + ' AND MONTH(Date_Created) in ('
+ SUBSTRING(@MonthsList, 1, LEN(@MonthsList)-1) +')'
END
EXEC sp_executesql @sql, N' @QuaterList varchar(50) ',
@QuaterList
END
问题解决了。这是因为我写了SELECT@MonthsList,所以它也返回了不需要的内容,而且也造成了问题。所以我把它取下来,问题就解决了 新程序代码为:
ALTER PROCEDURE [dbo].[StoredProcedure2]
@QuaterList varchar(50) = NULL
AS
BEGIN
DECLARE @sql nvarchar(4000)
SELECT @sql='SELECT Id, Suggester, Requester, Date_Created from CRM.dbo.CRM_Doctor_Request WHERE 1=1 '
If (@QuaterList) IS NOT NULL
BEGIN
DECLARE @MonthsList varchar(1000)
EXEC dbo.SPGetMonthsListforMultipleQuaters @QuaterList, @MonthsList OUTPUT
SELECT @sql=@sql + ' AND MONTH(Date_Created) in ('
+ SUBSTRING(@MonthsList, 1, LEN(@MonthsList)-1) +')'
END
EXEC sp_executesql @sql, N' @QuaterList varchar(50) ',
@QuaterList
END