SQL服务器:是否调用存储过程

SQL Server : calling a stored procedure or not

我有一个只有一个输入参数的存储过程。

但是,在存储过程中,有一个条件需要用户输入(WHEN t.flag = 0)。

有没有办法不调用新的存储过程但做同样的工作?

我不想在 [dbo].[UpdateTheRate] 中添加另一个输入参数 本身,因为我在这个存储过程中还有其他进程在进行。

ALTER PROCEDURE [dbo].[UpdateTheRate] (@PID int)
AS
    UPDATE t
    SET t.rate = 
            CASE 
               WHEN t.flag = 1 THEN (select UnitRate 
                                     from RateTable 
                                     where state ='IL' and Term='20')
               WHEN t.flag = 0 THEN EXEC [dbo.rate_procedure]  --(USER enter rate)
    FROM TblChargeTable t
    WHERE t.PID = @PID

类似的东西?

ALTER PROCEDURE [dbo].[UpdateTheRate] (@PID int)
AS

-- defer executing the procedure unless necessary
IF EXISTS (SELECT 1 FROM TblChargeTable WHERE flag = 0 and PID = @PID)
BEGIN
   EXEC dbo.rate_procedure; -- get @user_rate via return code or out parameters perhaps
END

UPDATE t
SET    t.rate = 
       CASE WHEN t.flag = 1 THEN (select UnitRate from RateTable where state ='IL' and Term='20')
            WHEN t.flag = 0 THEN @user_rate END -- retrieved above
FROM   TblChargeTable t
WHERE  t.PID = @PID;