我有存储过程:
[SP_Fetch_Budget_Data_ADF]
SP_Fetch_Data_ADF
这两个存储过程具有相同的参数:
CREATE PROCEDURE [DW].[SP_Fetch_Budget_Data_ADF]
@Date varchar(10),
@Entity varchar (12),
@Scenario varchar(10)
参数是从其他工具传递过来的。我的目标是编写第三个存储过程,在其中传递参数@Scenario varchar(10)
(与上面显示的两个存储过程的参数相同,因此该参数应该传递给所有3个存储过程)。
如果@Scenario
="实际",则执行SP_Fetch_Data_ADF
,否则执行SP_Fetch_Budget_Data_ADF
。
我找到了这个answer,但是我不知道如何传递参数。
- 更新**
下面是我的代码,但我得到这个错误:
找不到存储过程"SP_Fetch_Budget_Data_ADF"
代码:
CREATE PROCEDURE [DW].[SP_EXECUTE_ADF]
@Scenario varchar(10)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @queryToRun NVARCHAR(128) = 'EXECUTE ';
SELECT @queryToRun = @queryToRun + CASE
WHEN @Scenario = 'actual'
THEN 'DW.SP_Fetch_Data_ADF'
ELSE 'DW.SP_Fetch_Budget_Data_ADF'
END
EXECUTE sp_executesql @queryToRun;
END
1条答案
按热度按时间vohkndzv1#
只需使用IF语句来选择要调用的过程(并去掉
sp_
前缀;存储过程不应该有 any 前缀,更不用说特殊的sp_
前缀了