2016-08-19 1 views
-1

Ich möchte Datensatz aus Tabelle basierend auf ID mit gespeicherten Prozedur löschen. Der Id-Wert muss als Parameter übergeben werden. Beim Ausprobieren dieses Codes werden Daten in der Tabelle jedoch nicht gelöscht. Kann mir jemand helfen, dies tun würde Ihre Arbeit durch dieseGespeicherte PL/SQL-Prozedur

create or replace procedure PROC_INV_DELETE(num in number) 
is 
begin 

    delete from table_name 
    where id = '&num'; 
    commit; 

end; 
/

Antwort

1

zu erhalten:

create or replace procedure PROC_INV_DELETE(num in number) 
is 
begin 

    delete from table_name 
    where id = num; ---No need to use & and '' here 
    commit; 

end; 
/

Berufung: das

declare 

a number:= '&num' ; 

Begin 

    PROC_INV_DELETE(a); 

end; 
/
Enter value for num: 4 
old 3: a number:= '&num' ; 
new 3: a number:= '4' ; 

PL/SQL procedure successfully completed. 
+0

nicht mögen. Während der Ausführung der Prozedur sollte nach dem dynamischen Wert vom Benutzer gefragt werden. – Shine

+1

Verfahren bleibt gleich, nur Sie müssen ändern, wie Sie es nennen. Sehen Sie meinen Beitrag noch einmal, – XING

+1

@ Anonymous - Die Prozedur selbst kann nicht interaktiv sein. Deshalb brauchen Sie einen "Wrapper". Der Wrapper erhält den Wert vom Benutzer und übergibt ihn an die Prozedur. Vergessen Sie nicht, die Ausnahmebehandlung hinzuzufügen! –