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;
我有一个只有一个输入参数的存储过程。
但是,在存储过程中,有一个条件需要用户输入(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;