2014-11-05 78 views
1

我有兩個表:程序來比較兩個不同表中的列,使插入

  1. 項目,領域fld_id(整數),fld_allocated_hours(整數),fld_project_id(整數)
  2. 時間表與領域fld_id (整數),fld_allocated_time(整數),fld_project_id(整數)

而且我有這樣的過程:

CREATE PROCEDURE sp_insert_allocated_time(p_project_id integer, p_allocated_time integer) 
    RETURNS void 
    AS 
BEGIN 
INSERT INTO dbo.Timesheet(fld_id, fld_project_id,fld_allocated_time) 
from 
(
    SELECT p.fld_id, p.fld_allocated_hours t.fld_allocated_time 
    FROM dbo.Project p 
    INNER JOIN dbo.Timesheet t 
    ON p.fld_id=t.fld_id 
    where t.fld_project_id = p_project_id 
)AS Alias 
GROUP BY fld_id, fld_allocated_days, fld_allocated_time 
having SUM(fld_allocated_time) < fld_allocated_hours; 
END; 

我想使這個過程:

  1. 插入表時間表的allocated_time從參數fld_project_id
  2. 檢查從表時間表列SUM(fld_allocated_time)小於或使用下表項目fld_allocated_hours等於。
  3. 使插入或錯誤信息或退出

回答

1

可以使用if ... else塊基於的條件檢查的結果的情況,並做適當的行動。爲此,您需要將SUM(fld_allocated_time)和fld_allocated_hours的結果存儲到變量中,然後:

IF @sumResult <= @allocatedTime 
BEGIN 
--do some stuff 
END 
ELSE 
BEGIN 
--do some other stuff 
END