简体   繁体   English

SQL Server:是否调用存储过程

[英]SQL Server : calling a stored procedure or not

I have a stored procedure that has one input parameter. 我有一个存储过程有一个输入参数。

However, in the stored procedure, there is a condition that needs user's input ( WHEN t.flag = 0 ). 但是,在存储过程中,存在需要用户输入的条件( WHEN t.flag = 0 )。

Is there a way not to call a new stored procedure but does the same job? 有没有办法不调用新的存储过程但执行相同的工作?

I do not want to add another input parameter in [dbo].[UpdateTheRate] itself because I have other processes going on in this stored procedure. 我不想在[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

Something along these lines? 沿着这些方向的东西?

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM