Ik gebruik Oracle 10G Express-editie. Het heeft een mooie UI voor DB-ontwikkelaars. Maar ik ben geconfronteerd met een aantal problemen die opgeslagen procedures uitvoeren.
Procedure:
create or replace procedure temp_proc is
begin
DBMS_OUTPUT.PUT_LINE('Test');
end
het is succesvol gemaakt. Maar wanneer ik execute:
execute temp_proc;
Het toont ORA-00900: ongeldige SQL-instructie
Dus help hier nodig
Antwoord 1, Autoriteit 100%
Execute
Is SQL * PLUS SYNTAX .. Probeer uw oproep in BEGIN in te wikkelen .. Einde zoals deze:
begin
temp_proc;
end;
(Hoewel Jeffrey zegt dat dit niet werkt in Apex .. Maar je probeert dit te laten rennen in Sqldeveloper .. Probeer het menu ‘Run’ daar.)
Antwoord 2, Autoriteit 3%
Oracle 10G Express Edition-schepen met Oracle Application Express (Apex) ingebouwd. U voert dit in het venster SQL-opdrachten, dat geen ondersteuning biedt aan SQL * PLUS SYNTAX.
Dat maakt niet uit, omdat (zoals u hebt ontdekt) het begin … Eindsyntaxis werkt in Apex.
Antwoord 3, Autoriteit 2%
Beide ‘is’ en ‘AS’ zijn geldige syntaxis. Uitvoer is standaard uitgeschakeld . Probeer een procedure die ook de output mogelijk maakt …
create or replace procedure temp_proc is
begin
DBMS_OUTPUT.ENABLE(1000000);
DBMS_OUTPUT.PUT_LINE('Test');
end;
… en bel het in een PLSQL-blok …
begin
temp_proc;
end;
… omdat SQL niet-procedureel is.
Antwoord 4
Ik gebruik orakel 12 en het vertelt me dat als je de procedure moet aanroepen, het trefwoord callmoet gebruiken.
In jouw geval zou het moeten zijn:
begin
call temp_proc;
end;
Antwoord 5
Heb je geprobeerd de syntaxis op deze manier te corrigeren?:
create or replace procedure temp_proc AS
begin
DBMS_OUTPUT.PUT_LINE('Test');
end;