• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 656
  • Last Modified:

Learning how to use Virtual Box Oracle SQL Developer... Trying to create package

I'm trying learn how to use VB and I'm having trouble creating a package on Oracle SQL Developer in Virtual Box.

I go to file -> new -> Package...

then I don't see two separate files (one for spec and one for body) so I tried to insert both spec and body into one file but I keep getting an error, no matter how I try to insert my code for a working package.

I normally use PL/SQL Developer so I know my package already works on there but I can't get it to compile in VB.

I try to compile and because I have both spec and body in one file it is complaining about my "CREATE" that is coming from the body i.e. CREATE OR REPLACE PACKAGE BODY DROP_CREATE_TABLES_NIGHTLY IS
Any suggestions?
0
Mark_Co
Asked:
Mark_Co
  • 6
  • 5
  • 3
3 Solutions
 
johnsoneSenior Oracle DBACommented:
There should be a ; at the end of the package header specification.  Is there a / on the line after the ;?  If not, then I would put one there and try it.  That would be my guess as to what you need to do to get it to run.

If that doesn't work, can you post a few lines on either side of the error and what the error actually is?
0
 
Mark_CoAuthor Commented:
This is what I have

CREATE OR REPLACE PACKAGE DROP_CREATE_TABLES_NIGHTLY IS

              /*
               Original Author: Me
               Created Date: 3-Jan-2013
               Purpose: For storing procedures to drop, create, and archive new tables /
               To drop initial tables and recreate them nightly
              */

              PROCEDURE W(STR VARCHAR2); --WRAPPER FOR DBMS_OUTPUT
              PROCEDURE DROP_TABLES
              (
                            P_SCHEMA VARCHAR2
                           ,P_TABLENAME VARCHAR2
              ); --DROPS PRE-EXISTING TABLES
              PROCEDURE CREATE_NEW_ARCHIVED_TABLES; --RECREATES TABLES THEMSELVES
              PROCEDURE BUILD_ARCHIVED_TABLES; --POPULATE FRESH DATA INTO TABLES

END DROP_CREATE_TABLES_NIGHTLY;
/

CREATE OR REPLACE PACKAGE BODY DROP_CREATE_TABLES_NIGHTLY IS

              -------------------------------------------------------------------------------------------------------------------------------------------------------------------
              -------------------------------------------------------------------------------------------------------------------------------------------------------------------

              /* procedure 'W' is a wrapper for DBMS output. Placed at top of package to make globally available*/
              PROCEDURE W(STR VARCHAR2) IS
              
              BEGIN
              
                            /* setting variable to simpler to use STR variable for outputting */
                            DBMS_OUTPUT.PUT_LINE(STR);
              END;

              -------------------------------------------------------------------------------------------------------------------------------------------------------------------
              -------------------------------------------------------------------------------------------------------------------------------------------------------------------

              /* 
               Procedure purpose: For dropping previously archived tables so that new ones can be created 
               Ask yourself "what does a typical DROP TABLE SQL look like...
               I.E. 'DROP TABLE ME.CUSTOMERS' 
               therefore pass in the schema.tablename and voila, there is the procedure you want.
              */
              PROCEDURE DROP_TABLES

Open in new window

etc...
0
 
johnsoneSenior Oracle DBACommented:
And what is the error?
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
Mark_CoAuthor Commented:
Error(20,1): PLS-00103: Encountered the symbol "/"
0
 
Mark_CoAuthor Commented:
So I remove the "/" and the next error is Error(22,1): PLS-00103: Encountered the symbol "CREATE"
0
 
johnsoneSenior Oracle DBACommented:
That is not a tool that I am familiar with, but based on the errors that you are getting, it would seem that you cannot combine the package header and body into one script with that tool.
0
 
Mark_CoAuthor Commented:
I figured. Hmmm, I'll keep trying and seeing how I can get them into separate files but still connected to each other. At work, PL/SQL Developer auto creates a spec and a body file. I don't know how to do so in Virtual box Oracle SQL Developer
0
 
sdstuberCommented:
virtual box shouldn't be relevant.   in what way is it impacting you?

I use virtual box for several different types of servers and once logged in, the virtual nature of my system is invisible to my applications.
0
 
Mark_CoAuthor Commented:
I want to use it for home practice. But it's pretty useless if I can't figure out how to create packages and procedures on it
0
 
sdstuberCommented:
what exactly are you doing?  where does virtualbox come into play?

is your database running inside a virtual box machine?

are you running sql developer from within virtualbox machine?

both? neither?  if both, are they the same machine?  

if neither, how is virtual box involved?


also note, the code snippet above is incomplete.  It shouldn't compile anywhere because the package body is missing syntax.
0
 
sdstuberCommented:
I filled out the rest of the package body like below and copy it into sql developer.
I then run the script with F5 or by clicking the "Run Script" icon.

Both the package and package body created fine.


CREATE OR REPLACE PACKAGE DROP_CREATE_TABLES_NIGHTLY IS

              /*
               Original Author: Me
               Created Date: 3-Jan-2013
               Purpose: For storing procedures to drop, create, and archive new tables /
               To drop initial tables and recreate them nightly
              */

              PROCEDURE W(STR VARCHAR2); --WRAPPER FOR DBMS_OUTPUT
              PROCEDURE DROP_TABLES
              (
                            P_SCHEMA VARCHAR2
                           ,P_TABLENAME VARCHAR2
              ); --DROPS PRE-EXISTING TABLES
              PROCEDURE CREATE_NEW_ARCHIVED_TABLES; --RECREATES TABLES THEMSELVES
              PROCEDURE BUILD_ARCHIVED_TABLES; --POPULATE FRESH DATA INTO TABLES

END DROP_CREATE_TABLES_NIGHTLY;
/

CREATE OR REPLACE PACKAGE BODY drop_create_tables_nightly
IS
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    /* procedure 'W' is a wrapper for DBMS output. Placed at top of package to make globally available*/
    PROCEDURE w(str VARCHAR2)
    IS
    BEGIN
        /* setting variable to simpler to use STR variable for outputting */
        DBMS_OUTPUT.put_line(str);
    END;

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    /*
     Procedure purpose: For dropping previously archived tables so that new ones can be created
     Ask yourself "what does a typical DROP TABLE SQL look like...
     I.E. 'DROP TABLE ME.CUSTOMERS'
     therefore pass in the schema.tablename and voila, there is the procedure you want.
    */
    PROCEDURE drop_tables(p_schema VARCHAR2, p_tablename VARCHAR2)       --DROPS PRE-EXISTING TABLES
    IS
    BEGIN
        NULL;
    END;

    PROCEDURE create_new_archived_tables                               --RECREATES TABLES THEMSELVES
    IS
    BEGIN
        NULL;
    END;

    PROCEDURE build_archived_tables                                --POPULATE FRESH DATA INTO TABLES
    IS
    BEGIN
        NULL;
    END;
END;

Open in new window

                         
                 

If you get different results, please post exactly the steps you are performing, including anything that would make virtual box a relevant factor
0
 
Mark_CoAuthor Commented:
I guess it's just virtualbox that has issues. Thanks for trying
0
 
sdstuberCommented:
how does virtual box figure into this?  I'm willing to try to help but you need to tell me what you're doing.  What are the errors? What happens? What is leading you to think virtualbox is having a problem?  What are you doing differently than what I have above?
0
 
sdstuberCommented:
why the B?

a penalty grade is not appropriate here
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 6
  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now