1
我現在正在全面停電,希望有人能幫助我。在我的應用程序中,用戶可以通過單擊按鈕將數據從一個表複製到另一個表。源表中的數據將以不同方式檢索,具體取決於用戶單擊複製按鈕的頁面。根據參數複製數據
我的表
tabPlanning
+--------------+-------------+--------+--------+--------------+
| PlanningId | RequestId | Field1 | Field2 | Field3 |
|--------------|-------------|--------|--------|--------------|
| Primary key | Foreign key | | | |
+--------------+-------------+--------+--------+--------------+
| INT | INT | DATE | BIGINT | NVARCHAR(20) |
+--------------+-------------+--------+--------+--------------+
tabPlanningCopy
+------------------+-------------+--------+--------+--------------+
| PlanningCopyId | RequestId | Field1 | Field2 | Field3 |
|------------------|-------------|--------|--------|--------------|
| Primary Key | Foreign Key | | | |
+------------------+-------------+--------+--------+--------------+
| INT | INT | DATE | BIGINT | NVARCHAR(20) |
+------------------+-------------+--------+--------+--------------+
我的存儲過程
spCopyPlanning
spCopyPlanning
拷貝數據從tabPlanning
到tabPlanningCopy
取決於參數:
ALTER PROCEDURE dbo.spCopyPlanning
@PlanningId INT = NULL
@RequestId INT = NULL
AS
BEGIN
IF @PlanningId IS NOT NULL
BEGIN
IF EXISTS (SELECT * FROM tabPlanning WHERE RequestId = @RequestId)
BEGIN
INSERT INTO tabPlanningCopy(RequestId, Field1, Field2, Field3)
SELECT RequestId,
Field1,
Field2,
Field3
FROM tabPlanning
WHERE PlanningId = @PlanningId
END
END
ELSE
BEGIN
IF EXISTS (SELECT * FROM tabPlanning WHERE RequestId = @RequestId)
BEGIN
INSERT INTO tabPlanningCopy(RequestId, Field1, Field2, Field3)
SELECT RequestId,
Field1,
Field2,
Field3
FROM tabPlanning
WHERE RequestId = @RequestId
END
END
END
-- @PlanningId IS NOT NULL -> copy the row with PlanningId = @PlanningId
-- @PlanningId IS NULL -> copy the row with RequestId = @RequestId
的步驟工作,因爲它是正確的現在寫入。但是,我不認爲這是獲得我想要的最好方法(我討厭冗餘!)。我很確定可以通過擴大WHERE
聲明來實現,但我現在還沒有任何線索如何解決這個問題。任何人都可以帶我去解決我的冗餘代碼?