Ich führte den folgenden Code in Oracle Database, aber mit einem Fehler der Ansicht Name ist nicht vorhanden. Kann jemand hinein schauen?Ausführen sofort auf DDL-Anweisungen
Declare
Stmt varchar2(2000);
Var number;
Begin
Stmt:='create or replace view emp_dept_v as select * from emp';
Execute immediate stmt;
Select count(*) into var from emp_dept_v;
Dbms_output. Put_line(var);
End;
Ich weiß, dass DDL-Anweisungen automatisch verpflichtet sind, aber in diesem Fall muss ich eine Erklärung verpflichten hinzufügen, nachdem die sofortige Anweisung ausführen, das Problem zu lösen.
Ich bin gut zu gehen. Könnten Sie bitte einige Klarstellungen machen, warum es nicht funktioniert? Ich meine, wir versuchen, den Wert der Ansicht nach ihrer Erstellung in der vorherigen Zeile abzurufen. – Satyaki
@Satyaki Wie ich erwähnt habe, kompiliert das PL/SQL nicht einmal, wenn die von Ihnen gewählte Tabelle nicht existiert. Jede SQL innerhalb der 'EXECUTE sofort' als Zeichenkette wird während der Kompilation ignoriert. Nur bei erfolgreicher Kompilierung wird das SQL in Ihrem execute direkt ausgeführt. –
Danke dafür. Warum funktioniert es also, wenn ich nach dem execute execute einen Commit zum Code hinzufüge? – Satyaki