Solved

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

Posted on 2013-01-08
15
593 Views
Last Modified: 2013-01-13
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
Comment
Question by:Mark_Co
  • 6
  • 5
  • 3
15 Comments
 
LVL 34

Assisted Solution

by:johnsone
johnsone earned 167 total points
ID: 38756392
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
 

Author Comment

by:Mark_Co
ID: 38756405
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
 
LVL 34

Expert Comment

by:johnsone
ID: 38756648
And what is the error?
0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 

Author Comment

by:Mark_Co
ID: 38756666
Error(20,1): PLS-00103: Encountered the symbol "/"
0
 

Author Comment

by:Mark_Co
ID: 38756669
So I remove the "/" and the next error is Error(22,1): PLS-00103: Encountered the symbol "CREATE"
0
 
LVL 34

Expert Comment

by:johnsone
ID: 38756756
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
 

Author Comment

by:Mark_Co
ID: 38756766
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
 
LVL 74

Expert Comment

by:sdstuber
ID: 38760248
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
 

Author Comment

by:Mark_Co
ID: 38760256
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
 
LVL 74

Assisted Solution

by:sdstuber
sdstuber earned 333 total points
ID: 38760270
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
 
LVL 74

Accepted Solution

by:
sdstuber earned 333 total points
ID: 38760329
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
 

Author Comment

by:Mark_Co
ID: 38769432
I guess it's just virtualbox that has issues. Thanks for trying
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 38769436
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
 
LVL 74

Expert Comment

by:sdstuber
ID: 38769442
why the B?

a penalty grade is not appropriate here
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
As technology users and professionals, we’re always learning. Our universal interest in advancing our knowledge of the trade is unmatched by most industries. It’s a curiosity that makes sense, given the climate of change. Within that, there lies a…
Via a live example show how to connect to RMAN, make basic configuration settings changes and then take a backup of a demo database
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question