2016-05-11 11 views
0

Ich versuche, eine kleine Orakel gespeicherte Prozedur zu schreiben. Ich möchte Max Messageid aus einer Tabelle abrufen und diesen Wert in einer anderen Tabelle speichern.Maxid aus Tabelle abrufen und in eine andere Tabelle mit Orakel-Prozedur einfügen

ich dieses geschrieben habe ....

create or replace procedure WITHOUT_TYPE is 
vid int; 
begin 
TRUNCATE TABLE LOAD1; 
select max(MESSAGEID) into vid from LOAD; 
INSERT INTO LOAD1(vid) VALUES(vid); 
end; 
/

aber keinen Wert in vid in ÖFFNEN1 Tisch zu bekommen.

Kann jemand bitte überprüfen und helfen?

Antwort

2

Sie können es wie folgt umschreiben:

CREATE OR REPLACE PROCEDURE WITHOUT_TYPE IS 
    vOutput number; 
BEGIN 
    /* TRUNCATE is a DDL and can not be executed as a simple statement */ 
    DELETE LOAD1; 

    /* you can directly insert your value, no need for a variable */ 
    INSERT INTO LOAD1(vid) 
     SELECT MAX(MESSAGEID) 
     FROM LOAD; 

    /* retrieve the stored value */ 
    select vid 
     into vOutput 
    from LOAD1; 
    dbms_output.put_line('Value: ' || vOutput); 
END; 
/

Ich entfernte die TRUNCATE, da Sie eine DDL innerhalb eines PL/SQL-Prozedur (ohne dynamische SQL) verwenden können; Außerdem sollte TRUNCATE nur verwendet werden, wenn unbedingt notwendig und sehr sorgfältig.

Außerdem brauchen Sie keine Variable, um Ihren maximalen Wert zu behandeln; Sie können Ihren Wert direkt in die Zieltabelle mit einer einzigen INSERT-SELECT-Anweisung einfügen.

+0

danke für die tolle Antwort. Wenn ich die Prozedur ausführe, bekomme ich keine Ausgabe. Ich habe auch SET SERVEROUTPUT ON eingerichtet und wenn ich "execute WITHOUT_TYPE;" zeigt auch keinen Wert in der Spalte vid in der Tabelle load1 ... – Kate

+0

serveroutput ermöglicht das Drucken; Sie sollten etwas wie dbms_output (...) hinzufügen, um etwas anzuzeigen. Nur bearbeitet, um ein Beispiel zu zeigen – Aleksej

+0

Bitte überprüfen Sie diesen Screenshot http://prnt.sc/b2qr3e. Prozedur wird erfolgreich erstellt, aber wenn ich wähle * aus load1, zeigt es keinen Wert berechnet von Prozedur .... !! – Kate

Verwandte Themen