Ich habe gerade einen totalen Blackout und hoffe, dass mir jemand helfen könnte. In meiner Anwendung können Benutzer Daten durch Klicken auf Schaltflächen von einer Tabelle in eine andere kopieren. Die Daten aus der Quellentabelle werden abhängig von der Seite, auf der der Benutzer auf eine Kopierschaltfläche klickt, unterschiedlich abgerufen.Kopiere Daten in Abhängigkeit von Parameter
Meine Tabellen
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) |
+------------------+-------------+--------+--------+--------------+
Meine gespeicherten Prozedur
spCopyPlanning
spCopyPlanning
kopiert Daten tabPlanning
-tabPlanningCopy
in Abhängigkeit von Parametern:
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
Das Verfahren arbeitet, wie es jetzt geschrieben wird. Ich denke jedoch nicht, dass dies der beste Ansatz ist, um zu bekommen, was ich will (ich hasse Redundanz!). Ich bin mir ziemlich sicher, dass es durch die Erweiterung der WHERE
Aussage erreicht werden kann, aber ich habe jetzt keine Ahnung, wie man das löst. Könnte mich jemand zu einer Lösung führen, um meinen redundanten Code loszuwerden?