Wat is het probleem met dit pakket omdat het een fout geeft?
CREATE OR REPLACE PACKAGE PKG_SHOW_CUST_DETAILS
AS
PROCEDURE SHOW_CUST_DETAILS( myArg VARCHAR2);
END PKG_SHOW_CUST_DETAILS;
CREATE OR REPLACE PACKAGE BODY PKG_SHOW_CUST_DETAILS
AS
PROCEDURE SHOW_CUST_DETAILS(myArg VARCHAR2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(myArg);
END SHOW_CUST_DETAILS;
END PKG_SHOW_CUST_DETAILS;
/
Aan de compilatie van het bovenstaande script krijg ik de volgende fouten:
SQL & GT; Toon fouten Fouten voor Pakket PKG_SHOW_CUST_DETAILS: LINE / COL-fout ----------------------------------------------------- ------------------------ 6/1 PLS-00103: het symbool "Create" aangetroffen
Het pakket is heel eenvoudig en ik kan het niet compileren. Ik heb eerdere antwoorden op deze foutmelding doorzocht en geen van hen lost mijn probleem op.
Ik krijg consequent deze foutmelding voor nog 2 extra pakketten en ik zit vast op deze foutmelding, ongeacht wat ik doe. Ik heb zelfs geprobeerd om alles te strippen naar het uiterste bars, zoals hierboven getoond, maar het foutbericht lijkt niet weg te gaan.
BTW Ik voer dit op opdrachtregel SQL PLUS-sessie na het inloggen op mijn database van Oracle 11G.
Ja-Set Serveroutput On – wordt uitgevoerd en het foutbericht heeft niets met deze opdracht te maken.
Wat ben ik mis?
Antwoord 1, Autoriteit 100%
Op regel 5 is er een /
ontbreekt.
Er is een goed antwoord op de verschillen tussen ;
en /
hier .
Kortom, als u een CREATE
-blok via script uitvoert, moet u /
gebruiken om SQLPlus te laten weten wanneer het blok eindigt, aangezien een PL/SQL-blok veel exemplaren van ;
.
Antwoord 2, autoriteit 2%
Voor mij / moest in een nieuwe regel.
Bijvoorbeeld
create type emp_t;/
werkte niet
maar
create type emp_t;
/
werkte.
Antwoord 3
In mijn geval werkt EXECUTE IMMEDIATE ('CREATE TABLE ...')
bijvoorbeeld:
DECLARE
myVar INT;
BEGIN
SELECT 2 INTO myVar FROM dual;
IF myVar > 1 THEN
EXECUTE IMMEDIATE('Create Global Temporary Table TestTemp ( id VARCHAR2(2) ) ON COMMIT PRESERVE ROWS');
END IF;
END;
Verwijzing naar Tabel maken zoals binnen PL/SQL?
Antwoord 4
Voer pakketaangifte en hoofdtekst afzonderlijk uit.