我要实现的是仅使用一个存储过程来修改两个不同表中的某些列
SELECT
ccpa.idActividad,
ccpa.sTitulo,
ccpa.dFechaInicioEstimada,
ccpa.dFechaInicioReal,
ccpa.dFechaEstimada,
ccpa.dFechaResolucion,
ccpa.iProgreso
FROM
dbo.Ctrl_ClienteProyectosActividades ccpa;
SELECT
ccph.idHito,
ccph.sHito,
ccph.dFechaInicioEstimada,
ccph.dFechaInicio,
ccph.dFechaCierreEstimada,
ccph.dFechaCierreReal,
ccph.iProgreso
FROM
dbo.Ctrl_ClienteProyectosHitos ccph;
这些是我要改进的列。
到目前为止,我有这个
ALTER PROCEDURE [dbo].[spGantt_editar]
@sTitulo VARCHAR(50),
@dFechaInicioEstimada DATETIME,
@dFechaInicioReal DATETIME,
@dFechaEstimada DATETIME,
@dFechaResolucion DATETIME,
@iProgreso INT
AS
BEGIN
UPDATE Editar
SET dFechaEstimada = ISNULL(@dFechaEstimada, dFechaEstimada),
@dFechaInicioReal = ISNULL(@dFechaInicioReal, dFechaInicioReal),
....
WHERE
Editar = @dFechaI
SET NOCOUNT ON;
END
关于如何实现此目标的任何想法?任何建议将不胜感激谢谢
答案 0 :(得分:0)
您可以尝试使用单个存储过程(即您想要的方式)编写单独的更新命令。
所以代替这个:
ALTER PROCEDURE [dbo].[spGantt_editar]
@sTitulo VARCHAR(50),
@dFechaInicioEstimada DATETIME,
@dFechaInicioReal DATETIME,
@dFechaEstimada DATETIME,
@dFechaResolucion DATETIME,
@iProgreso INT
AS
BEGIN
UPDATE Editar
SET dFechaEstimada = ISNULL(@dFechaEstimada, dFechaEstimada),
@dFechaInicioReal = ISNULL(@dFechaInicioReal, dFechaInicioReal),
....
WHERE
Editar = @dFechaI
SET NOCOUNT ON;
END
您可以这样写:
ALTER PROCEDURE [dbo].[spGantt_editar]
@sTitulo VARCHAR(50),
@dFechaInicioEstimada DATETIME,
@dFechaInicioReal DATETIME,
@dFechaEstimada DATETIME,
@dFechaResolucion DATETIME,
@iProgreso INT
AS
BEGIN
UPDATE Editar
SET dFechaEstimada = ISNULL(@dFechaEstimada, dFechaEstimada) where Editar =@dFechaI
UPDATE Editar
SET @dFechaInicioReal = ISNULL(@dFechaInicioReal, dFechaInicioReal) WHERE Editar = @dFechaI
SET NOCOUNT ON;
END
希望这会有所帮助。