0

Ich übersprang Declare-Anweisung, da es optional ist. Got Compiler Log - Fehler.Wie erstellt Proc ohne Variablen, die zwei Tabellen in SQL Developer vergleicht?

CREATE PROCEDURE abc 
Begin 
WITH xT1 AS 
(SELECT Table1.* 
FROM Table1 
WHERE status_CD ='M') 
SELECT 
     CASE WHEN Table2.status_cd IS NULL 
       THEN 'New' 
       ELSE 'Old' 
     END AS COMPX 
     , xT1.* 
FROM Table1 
LEFT OUTER JOIN table2 
      ON xT1.t1_ID = table2.t2_ID 
; 
end; 
+0

Was ist der Fehler? Was möchten Sie mit dem Ergebnis Ihrer Anfrage machen? Eine gespeicherte Prozedur kann nicht einfach eine 'Select'-Anweisung sein. Sie können eine oder mehrere skalare Variablen auswählen, Sie können eine oder mehrere Sammlungen sammeln, Sie können einen out-Parameter deklarieren, der ein sys_refcursor ist, und einen Cursor an den Aufrufer zurückgeben (was dann wissen müsste, wie man Daten von diesem Cursor holt, um etwas damit zu tun). –

Antwort

0

In Ihrer FROM-Klausel ist keine XT1-Tabelle enthalten. Ersetzen Sie Tabelle1 durch XT1 in Ihrer Select-Anweisung. unten Ihre geänderte Abfrage ist

MIT xT1 AS
(SELECT * FROM Test Tabelle 1 WHERE no = 1) CASE SELECT WENN Table2.sal IS NULL THEN 'Alt' END AS 'Neu' ELSE COMPX , xT1. * VON xT1 LINKER OUTER JOIN Testtabelle2 ON xT1.no = table2.no ;