我的存储过程就像这样
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE ph_GetAllStaffAddressByCamp
@Year INT,
@strYear VARCHAR(2) OUTPUT
AS
IF NULLIF(@Year, '') IS NULL
SET @Year = Exec [cs_GetCurrentYear] @strYear
SELECT DISTINCT [VolID], [CampID], [VolFName] FROM [vStaffJobAndCamp]
where CampCode Like @Year
正如您所看到的,我正在尝试在此过程中执行[cs_GetCurrentYear]
(添加了以下过程)
ALTER PROCEDURE [dbo].[cs_GetCurrentYear]
@strYear VARCHAR(2) OUTPUT
AS
SELECT @strYear = Year FROM tblCurrentYear
但这会在编译时抛出错误。 它看起来像这样
Msg 156, Level 15, State 1, Procedure ph_GetAllStaffAddressByCamp, Line 8
Incorrect syntax near the keyword 'Exec'.
答案 0 :(得分:1)
您可以将第二个存储过程修改为存储的函数,并从第一个存储过程中调用它。在此处阅读更多内容:How to call a scalar function in a stored procedure
答案 1 :(得分:1)
您可以创建一个表格,并在其中插入SP的结果。尝试
DECLARE @TheYear TABLE
(
TheYear Varchar(2)
)
INSERT INTO @theYear (TheYear)
Exec [cs_GetCurrentYear] @strYear
SET @Year = (SELECT TOP(1) TheYear FROM @TheYear)