Compilation errors with store procedure

Hi guys, I just started SQL so forgive me if I ask any real stupid questions. This is the problem I have right now as said in my title.
This is my procedure.sql
CREATE OR REPLACE PROCEDURE verify IS
no_of_duplicates NUMBER:=0;
BEGIN
SELECT COUNT(*) INTO no_of_duplicates
FROM EMPLOYEE
WHERE E# =
(sELECT E# FROM DRIVER
WHERE EXISTS
(SELECT E# FROM MECHANIC
WHERE DRIVER.L# = MECHANIC.L#));
IF no_of_duplicates:=0 THEN dbms_output.put_line('OK');
ELSE
SELECT E#,NAME FROM EMPLOYEE
WHERE E# =
(SELECT E# FROM DRIVER
WHERE EXISTS
(SELECT E# FROM MECHANIC
WHERE DRIVER.L# = MECHANIC.L#));
END IF;
END verify;
While trying to create the procedure, it gives me the compilation errors. I have been stuck with this for hours and can't seem to find anything wrong with it. Can anyone point me in the right direction? Thanks!

Hi,
Once again, post your code.  The error occurs when you call the procedure, but you haven't posted the code that calls the procedure and causes the error.
When I do this in SQL*Plus:
SET  SERVEROUTPUT  ON  FORMAT WRAPPED
EXEC  verify;
The procedure you posted runs perfectly (that is, is displays the e# only, exactly as it was designed to do).
One way to display both the e# and the name is to BULK COLLECT both the e# and name into separate collections, like this:
CREATE OR REPLACE PROCEDURE verify IS 
    TYPE  e#_table  IS TABLE OF employee.e#%TYPE;
    e#_list    e#_table;
    TYPE  name_table  IS TABLE OF employee.name%TYPE;
    name_list  name_table;
BEGIN 
    SELECT            e#,       name
    BULK COLLECT INTO e#_list,  name_list
    FROM              employee 
    WHERE   e# IN (
                      SELECT  d.e#
                      FROM    driver    d
                      JOIN    mechanic  m  ON  d.e#  = m.e# 
    IF  e#_list.COUNT  = 0
    THEN
        dbms_output.put_line ('OK, there are no illict duplications');
    ELSE     -- that is, e#_list.COUNT <> 0
        dbms_output.put_line ('The following employees are both drivers and mechanics:');
        FOR j IN 1..e#_list.COUNT LOOP    -- i in parentheses sometimes displays wrong on the OTN site
            dbms_output.put      ( TO_CHAR ( e#_list (j)
                                           , '999999999999'
            dbms_output.put      ('   ');
            dbms_output.put_line (name_list (j)); 
        END LOOP; 
    END IF; 
END verify; 
SHOW ERRORS
Here's the output I get when I run the procedure above with your sample data:
The following employees are both drivers and mechanics:
            1   John Smith
You'll notice I made several other changes in your code, sometimes because they are clearly better practices, and sometimes just to show you different ways to do the same thing, which you may or may not want to use in this problem.
For example, you were doing the same query (with only very slight differences) 2 times: once to get no_of_duplicates, and then a second time to get the actual data.  I don't know if that's the most efficient way to do what you need.  Say there are 1000 rows in the result set.  You'll fetch all 1000 once just to get the total number, (which you don't need, if all you care about at this point is if there are any), and then to get the data.  When you do a BULK COLLECT, you automatically get the COUNT anyway, so why not do the BULK COLLECT first, then use that COUNT to see what you have to do next.  If the COUNT is more than 0, then you've already got the data, and you don't need to fetch it again.  Also, repeating (essentially) the same code is a maintenance problem.  If you ever need to make a change, you need to make the same change in multiple places.  At best, that's a pain; but this is the exactly the kind of mistake that is easy to miss in in testing, and you might have code running for weeks in Production before you notice that sometimes it's giving the wrong results.
Another example: e# is a NUMBER.  While it is possible to convert NUMBERs into VARCHAR2s, and then store those VARCHAR2s in a VARCHAR2 collecction, wouldn't it make more sense just to store them in a NUMBER collection?

Similar Messages

  • Compilation error while creating procedure

    Hi,
    I am getting compilation error while creating procedure
    CREATE OR REPLACE My_CHANGEDATE IS
    error_string VARCHAR2(400) := NULL;
    BEGIN
    Create table set_temp as select * from set;
    CURSOR c1 is
         SELECT a.SETNUM, b.CHANGEDATE from
         set a, setsp_t2 b
         where a.setnum = b.setnum
         and trunc(a.changedate) < trunc(b.CHANGEDATE);
    BEGIN
         FOR rec IN c1 LOOP
              UPDATE set SET changedate = rec.changedate
              WHERE setnum = rec.setnum;
              Insert into set_temp select * from set where setnum = rec.setnum;
              END LOOP;
         EXCEPTION
              WHEN NO_DATA_FOUND THEN
              NULL;
         WHEN OTHERS THEN
                   error_string := 'My_CHANGEDATE - '||SUBSTR(SQLERRM,1,350);
    DBMS_OUTPUT.PUT_LINE(error_string);
                   RAISE;
    END My_CHANGEDATE;

    I have taken your code and cleaned it up to be more readable. Please see the comments in the code.
    CREATE OR REPLACE My_CHANGEDATE
    IS
            error_string VARCHAR2(400) := NULL;
    BEGIN
            /* The only way to issue DDL in a procedure is to either user
             * DBMS_SQL or EXECUTE IMMEDIATE. Creating objects is generally
             * not needed or recommended in frequently run code.
            Create table set_temp as select * from set;    
            /* The cursor declarations need to go in the declaration section of the
             * procedure (between IS .. BEGIN).
            CURSOR c1 is                                   
            SELECT a.SETNUM, b.CHANGEDATE from
            set a, setsp_t2 b
            where a.setnum = b.setnum
            and trunc(a.changedate) < trunc(b.CHANGEDATE);
            BEGIN   /* Where is the END that goes with this begin? */
            /* Single record processing is generally not recommended. It is considered a "slow-by-slow" method. */
            FOR rec IN c1 LOOP
                    UPDATE set SET changedate = rec.changedate
                    WHERE setnum = rec.setnum;
                    Insert into set_temp select * from set where setnum = rec.setnum;
            END LOOP;
    EXCEPTION
            WHEN NO_DATA_FOUND THEN
                    NULL;
            WHEN OTHERS THEN
                    error_string := 'My_CHANGEDATE - '||SUBSTR(SQLERRM,1,350);
                    DBMS_OUTPUT.PUT_LINE(error_string);
                    RAISE;
    END My_CHANGEDATE;My general recommendations are as follows:
    1. Remove the CREATE TABLE from the procedure altogether.
    2. Don't use reserved words for object names (e.g. SET)
    3. Remove the record by record processing and consolidate it to a single UDPATE statement as follows (note untested):
    UPDATE  set s
    SET     changedate = (
                            SELECT  CHANGEDATE
                            FROM    SET A
                            ,       SETSO_T2 B
                            WHERE   A.SETNUM = B.SETNUM
                            AND     S.SETNUM = A.SETNUM
                            AND     TRUNC(A.CHANGEDATE) < TRUNC(B.CHANGEDATE)
    WHERE EXISTS(
                    SELECT  NULL
                    FROM    SET A
                    WHERE   A.SETNUM = S.SETNUM
                    )HTH!

  • Error with stored procedure block datasource

    Hi all,
    I tried to base a datablock on a stored procedure in order to get better runtime performance. I work with Forms Builder 6i with patch 17 , and our database is oracle 8.1.7.1.4
    But when compiling I got errors.
    Here are what I did :
    create or replace type TSourceObject as object(name varchar2(30), propname varchar2(200));
    create or replace type TSourceTable is table of TSourceObject;
    create or replace procedure p_query_ntwk_chnl_mirror(p_tab IN OUT NOCOPY TSourceTable, p_action varchar2, p_lien number)
    is
    begin
    if p_action = 'VISU' then
    select TSourceObject(B.bdw_name, P.prop_bdw_name)
    bulk collect into p_tab
    from T_NETWORK_CHANNEL N, t_bdw_mw B, t_prop_bdw_mw P
    where B.comp_bdw = P.comp_bdw and P.comp_prop_bdw = N.comp_prop_bdw
    and EXISTS (SELECT 1
    FROM t_channel_element C
    WHERE N.comp_network_channel = C.comp_network_channel and comp_lien = p_lien);
    else
    select TSourceObject(B.bdw_name, P.prop_bdw_name)
    bulk collect into p_tab
    from T_NETWORK_CHANNEL N, t_bdw_mw B, t_prop_bdw_mw P
    where B.comp_bdw = P.comp_bdw and P.comp_prop_bdw = N.comp_prop_bdw;
    end if;
    end;
    Then I created the datablock with the wizard , I entered correctly the value of the arguments for the table type name, the argument p_action and the argument p_lien.
    And when compiling there was this alert error :
    Compiling QUERY-PROCEDURE trigger on NETWORK_CHANNEL_MIRROR data block...
    Compilation error on QUERY-PROCEDURE trigger on NETWORK_CHANNEL_MIRROR data block:
    PL/SQL ERROR 960 at line 5, column 9
    RPCs cannot use variables with schema level user-defined types in this release
    PL/SQL ERROR 0 at line 5, column 9
    Item ignored
    PL/SQL ERROR 320 at line 7, column 26
    the declaration of the type of this expression is incomplete or malformed
    PL/SQL ERROR 0 at line 7, column 1
    Statement ignored
    PL/SQL ERROR 320 at line 8, column 28
    the declaration of the type of this expression is incomplete or malformed
    PL/SQL ERROR 0 at line 8, column 1
    Statement ignored
    Compilation errors have occurred.
    So what should I do ?
    Thank you very much indeed.

    I create the package , and when creating the body then there was an error.
    Here is the package :
    create or replace package pkg_query_ntwrk_chnl_mirror
    is
    type TSourceObject is record(name varchar2(30), propname varchar2(200));
    type TSourceTable is table of TSourceObject index by binary_integer;
    procedure p_query_ntwk_chnl_mirror(p_tab IN OUT NOCOPY pkg_query_ntwrk_chnl_mirror.TSourceTable, p_action varchar2, p_lien number);
    end;
    create or replace package body pkg_query_ntwrk_chnl_mirror
    is
    procedure p_query_ntwk_chnl_mirror(p_tab IN OUT NOCOPY pkg_query_ntwrk_chnl_mirror.TSourceTable, p_action varchar2, p_lien number)
    is
    begin
    if p_action = 'VISU' then
         select B.bdw_name, P.prop_bdw_name
         bulk collect into p_tab
         from T_NETWORK_CHANNEL N, t_bdw_mw B, t_prop_bdw_mw P
         where B.comp_bdw = P.comp_bdw and P.comp_prop_bdw = N.comp_prop_bdw
         and EXISTS (SELECT 1
         FROM t_channel_element C
         WHERE N.comp_network_channel = C.comp_network_channel and comp_lien = p_lien);
    else
         select B.bdw_name, P.prop_bdw_name
         bulk collect into p_tab
         from T_NETWORK_CHANNEL N, t_bdw_mw B, t_prop_bdw_mw P
         where B.comp_bdw = P.comp_bdw and P.comp_prop_bdw = N.comp_prop_bdw;
    end if;
    end;
    end;
    And here is the error :
    7/2 PL/SQL: SQL Statement ignored
    8/20 PLS-00597: expression 'P_TAB' in the INTO list is of wrong type
    15/2 PL/SQL: SQL Statement ignored
    16/20 PLS-00597: expression 'P_TAB' in the INTO list is of wrong type
    And what is the problem here ? I think it is right!

  • Compilation errors with JDeveloper 10.1.2.2.0

    Hello,
    I want to change my environment work. First I worked with Eclipse (Europa, jre 1.6), I have no error with my following code source :
    private List<String> lString;
    and now I have a compilation error with the same code
    ' Error(43,14): <identifier> expected '
    I think it's a compiler version problem but I'm not sure and I don't know how to change the compiler version.
    If someone have any idea, I will be happy to receive response.
    Thanks

    JDeveloper 10.1.2.2.0 doesn't support neither JDK 1.6 nor JDK 1.5.
    --olaf                                                                                                                                                                                       

  • Error when run crystal report with store procedure in JSP

    I try to run report which is developed by crystal report XI and store procedure (SQL 2005) with JSP.
    But it occurs error that is "com.crystaldecisions.reports.reportengineinterface.JPEReportSource - failed to process getPage request: No results were returned by the query."
    How can I do for solving this problem? Pls, help me !!!!!
    (In other report which is not used store procedure I can run fine.)
    Message was edited by:
    Bonds_Identity

    What version of CR are you using?
    What CR updates are you using?
    See sample apps here:
    https://wiki.sdn.sap.com/wiki/display/BOBJ/CrystalReportsfor.NETSDK+Samples
    in particular check out vbnet_win_pass_dataset_main_sub.zip
    The [Crystal Reports for Visual Studio 2005 Walkthroughs|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2081b4d9-6864-2b10-f49d-918baefc7a23] will also be good to look at.
    Ludek
    Follow us on Twitter
    http://twitter.com/SAPCRNetSup

  • With Store procedure Error

    Hi all  I face a error in create store procedure with like this code can u tel me what i did wrong .
    here is my code
    Create PROCEDURE [dbo].[FACT_CURRENT_VS_PRV]
        @country nvarchar (50)
    AS
    BEGIN
            if     @command='XPO1'
                                BEGIN
                                WITH CurrentMonth(
                                            SHORT_DESC ,
                                             PERIOD_CODE,
                                            SALES_VALUE_01     Units,
                                            SALES_VALUE_02 [Values]
                                as    (
                                            SELECT    
                                            SHORT_DESC ,
                                             PERIOD_CODE,
                                            SALES_VALUE_01     Units,
                                            SALES_VALUE_02 [Values]
                                        FROM table 3
                                PreviousMonth(
                                        SHORT_DESC,
                                        PERIOD_CODE,
                                        SPEC_CODE_IMS,
                                        SPEC_CODE_PFZ,
                                        Units,
                                        [Values]
                                as    (
                                            SELECT    
                                            SHORT_DESC ,
                                             PERIOD_CODE,
                                            SALES_VALUE_01     Units,
                                            SALES_VALUE_02 [Values]
                                        FROM table 4
                                    SELECT  * FROM CurrentMonth
                                    except
            END
                If @country='XPO2'
                    BEGIN
                        WITH CurrentMonth(
                                        SHORT_DESC,
                                        PERIOD_CODE,
                                        SPEC_CODE_IMS,
                                        SPEC_CODE_PFZ,
                                        Units,
                                        [Values]
                                as    (
                                        SELECT    
                                            SHORT_DESC ,
                                             PERIOD_CODE,
                                            SALES_VALUE_01     Units,
                                            SALES_VALUE_02 [Values]
                                        FROM table 1
                                PreviousMonth(
                                        SHORT_DESC ,
                                             PERIOD_CODE,
                                            SALES_VALUE_01     Units,
                                            SALES_VALUE_02 [Values]
                                as    (
                                        SELECT    
                                            SHORT_DESC ,
                                             PERIOD_CODE,
                                            SALES_VALUE_01     Units,
                                            SALES_VALUE_02 [Values]
                                        FROM table 2              
                                    SELECT  * FROM CurrentMonth
                                    except
                                    select  * FROM PreviousMonth
                    END
    END
     and i got this error 
    Msg 319, Level 15, State 1, Procedure FACT_CURRENT_VS_PRV, Line 116
    Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
    Msg 102, Level 15, State 1, Procedure FACT_CURRENT_VS_PRV, Line 152
    Incorrect syntax near ','.
    I m little bit confused why its happen
    Thanks for help

    The error message is obvious. each CTE has to be preceded by ;
    so use like this
    Create PROCEDURE [dbo].[FACT_CURRENT_VS_PRV]
    @country nvarchar (50)
    AS
    BEGIN
    if @command='XPO1'
    BEGIN
    ;WITH CurrentMonth(
    SHORT_DESC ,
    PERIOD_CODE,
    SALES_VALUE_01 Units,
    SALES_VALUE_02 [Values]
    as (
    SELECT
    SHORT_DESC ,
    PERIOD_CODE,
    SALES_VALUE_01 Units,
    SALES_VALUE_02 [Values]
    FROM table 3
    PreviousMonth(
    SHORT_DESC,
    PERIOD_CODE,
    SPEC_CODE_IMS,
    SPEC_CODE_PFZ,
    Units,
    [Values]
    as (
    SELECT
    SHORT_DESC ,
    PERIOD_CODE,
    SALES_VALUE_01 Units,
    SALES_VALUE_02 [Values]
    FROM table 4
    SELECT * FROM CurrentMonth
    except <you're missing something here>
    END
    If @country='XPO2'
    BEGIN
    ;WITH CurrentMonth(
    SHORT_DESC,
    PERIOD_CODE,
    SPEC_CODE_IMS,
    SPEC_CODE_PFZ,
    Units,
    [Values]
    as (
    SELECT
    SHORT_DESC ,
    PERIOD_CODE,
    SALES_VALUE_01 Units,
    SALES_VALUE_02 [Values]
    FROM table 1
    PreviousMonth(
    SHORT_DESC ,
    PERIOD_CODE,
    SALES_VALUE_01 Units,
    SALES_VALUE_02 [Values]
    as (
    SELECT
    SHORT_DESC ,
    PERIOD_CODE,
    SALES_VALUE_01 Units,
    SALES_VALUE_02 [Values]
    FROM table 2
    SELECT * FROM CurrentMonth
    except
    select * FROM PreviousMonth
    END
    END
    I think you're missing a statement after except in first condition
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • [ SOLVED ] Compile Error with Java Fonts & IntelliJ

    Hi All
    I have now got a new problem when i compile a flex project.  Yesterday inorder to get the IJ Interface font smoothing sorted, i had to add this line to my ~/.bashrc file
    _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on
    But now when i go to run a flex project, i get the following error message
    Information:Using built-in compiler shell, up to 4 parallel threads
    See compiler settings at File | Settings | Compiler | Flex Compiler page
    Information:Starting Flex compiler:
    /opt/java/jre/bin/java -Dapplication.home=/home/julian/SDK/flex_sdk_4.5.0.17855 -Xmx384m -Dsun.io.useCanonCaches=false -Duser.language=en -Duser.region=en -Xmx1024m -classpath /opt/idea-IU-98.311/plugins/flex/lib/flex-compiler.jar:/home/julian/SDK/flex_sdk_4.5.0.17855/lib/flex-compiler-oem.jar com.intellij.flex.compiler.FlexCompiler 48936
    Information:Compilation completed with 2 errors and 0 warnings
    Information:2 errors
    Information:0 warnings
    Error:Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on
    Error:java.net.SocketException: Socket closed
    Error:java.net.ConnectException: Connection refused
    Error:     at java.net.PlainSocketImpl.socketConnect(Native Method)
         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
         at java.net.Socket.connect(Socket.java:529)
         at java.net.Socket.connect(Socket.java:478)
         at java.net.Socket.<init>(Socket.java:375)
         at java.net.Socket.<init>(Socket.java:218)
         at com.intellij.flex.compiler.FlexCompiler.openSocket(FlexCompiler.java:35)
         at com.intellij.flex.compiler.FlexCompiler.main(FlexCompiler.java:70)
    Any suggestions, besides disabling the _JAVA_OPTION again ?
    Many Thanks
    Last edited by whitetimer (2010-11-14 17:24:11)

    -Dawt.useSystemAAFontSettings=on needs to be added to the end of file
    idea.vmoptions

  • "catch is unreachable" compiler error with java try/catch statement

    I'm receiving a compiler error, "catch is unreachable", with the following code. I'm calling a method, SendMail(), which can throw two possible exceptions. I thought that the catch statements executed in order, and the first one that is caught will execute? Is their a change with J2SE 1.5 compiler? I don't want to use a generic Exception, because I want to handle the specific exceptions. Any suggestions how to fix? Thanks
    try {
    SendMail(....);
    } catch (MessagingException e1) {
    logger.fine(e1.toString());
    } catch (AddressException e2) {
    logger.fine(e2.toString());
    public String SendMail(....) throws AddressException,
    MessagingException {....                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    I found the problem:
    "A catch block handles exceptions that match its exception type (parameter) and exception types that are subclasses of its exception type (parameter). Only the first catch block that handles a particular exception type will execute, so the most specific exception type should come first. You may get a catch is unreachable syntax error if your catch blocks do not follow this order."
    If I switch the order of the catch exceptions the compiler error goes away.
    thanks

  • Error with a procedure in Forms 6i

    Hello,
    hope someone can help:
    I’m running Forms6i client /server and have a problem with a procedure. What I wish to do is to fill some text_item in a block with values from a query like this:
    Procedure test is
    BEGIN
    select distinct ( pc.d_id), pc.min_value, pc.max_value, pc.def_value, pc.act_value
    into :blk_multi.c_id,:blk_multi.txt_multi_min,:blk_multi.txt_multi_max, :blk_multi.txt_multi_def, :blk_multi.txt_multi_old_value
    from par_car pc, c_list cl
    where pc.par_id = 21 and pc.d_id IN (select cg.ce_id from cel_group cg where cg.gr_id like 'TEST') and
    pc.d_id = cl.c_id
    order by pc.d_id desc;
    end;
    In my form I have a button and in trigger WHEN-BUTTON-PRESSED I call this procedure. It returns error message FRM-40735 WHEN-BUTTON-PRESSED trigger raised unhandled exception ORA-06502. What causes this error message?
    Regards
    Roar

    Roar,
    2 comments:
    1. Query into PLSQL variables and not forms fileds. After a successful query, set the value in teh variables to teh forms fields
    2. another problem with your implementation is that it breaks when many rows are retruned. You should use a cursor that loops trhough the query result sets. This way you are save.
    Frank

  • How to create a schema and assign roles with store procedure or function?

    Hi All,
    I am creating a webpage that will call oracle store procedure or function to create a schema and add roles. Please let me know if there a method to do that.
    Thank you

    Hi CristiBoboc,
    Thank you very much for your help. Here is my code to create a user:
    create or replace
    FUNCTION user_create (user_name IN nvarchar2, user_pw IN nvarchar2)
    RETURN number
    IS
    sql_stmt varchar2(200);
    sql_stmt2 varchar2(200);
    var_temp_count NUMBER(2);
    un varchar2(30) := user_name;
    up varchar2(30) := user_pw;
    BEGIN
    sql_stmt := 'create user :1 identified by :2
    default tablespace users
    temporary tablespace temp
    quota 5m on users';
    sql_stmt2 := 'grant developers to :1';
    EXECUTE IMMEDIATE sql_stmt USING un,up;
    EXECUTE IMMEDIATE sql_stmt2 USING un;
    select count(*) into var_temp_count from dba_users where username = UPPER(user_name);
    return var_temp_count;
    END;
    When I run, I get following error:
    exec :myvar :=user_create('aaa','12345');
    BEGIN :myvar :=user_create('aaa','12345'); END;
    ERROR at line 1:
    ORA-01935: missing user or role name
    ORA-06512: at "CSDBA.USER_CREATE", line 15
    ORA-06512: at line 1

  • Compiler bug in 10.1.3 EA1?  get "Internal compilation error" with EnumSet

    The code sample below generates "Error: Internal compilation error, terminated with a fatal exception" when doing make. It's a very simple example, it creates an EnumSet with one element and dumps it via the "toString()" method.
    If I change the line:
    "EnumSet set = EnumSet.of(Buttons.ONE);"
    To:
    "EnumSet set = EnumSet.allOf(c);"
    It works fine. For some reason the "of" method of "EnumSet" crashes the compiler.
    Any ideas?
    ========================================
    package mypackage;
    import java.util.EnumSet;
    public class EnumDemo
    enum Buttons { ONE, TWO, THREE }
    public EnumDemo()
    public void dump()
              Class c = Buttons.class;
              EnumSet set = EnumSet.of(Buttons.ONE);
              System.out.println(set.toString());
    public static void main(String[] args)
    EnumDemo cls = new EnumDemo();
    cls.dump();
    ==============================

    package com.esp.main;
    import java.awt.Dimension;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JTree;
    import javax.swing.event.TreeModelEvent;
    import javax.swing.event.TreeModelListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreePath;
    public class TreeNavigator extends JTree {
    private FormMain fm;
    public TreeNavigatorNode selectedTreeNode;
    public TreePath selectedTreePath;
    public JTree thisTree;
    public TreeNavigator(FormMain pFM) {
    fm = pFM;
    thisTree = this;
    addTreeSelectionListener(new TreeSelectionListener() {
    public void valueChanged(TreeSelectionEvent e) {
    selectedTreeNode = (TreeNavigatorNode)thisTree.getLastSelectedPathComponent();
    if (selectedTreeNode == null) {
    return;
    selectedTreePath = e.getPath();
    addMouseListener(new MouseAdapter() {
    public void mouseReleased(MouseEvent e) {
    if (e.getClickCount() == 1) {
    doPopup(e.getX(), e.getY());
    String nodeInternalFrameClassName = selectedTreeNode.getInternalFrameClassName();
    String nodeNodeTypeDesc = selectedTreeNode.getNodeTypeDesc();
    if ((selectedTreeNode != null) && (nodeNodeTypeDesc.equals("FORM") || nodeNodeTypeDesc.equals("GRAPH"))) {
    fm.showInternalFrame(nodeInternalFrameClassName, fm, null);
    } else if (e.getClickCount() == 1) {
    TreePath path = thisTree.getClosestPathForLocation(e.getX(), e.getY());
    thisTree.setSelectionPath(path);
    public void doPopup(int x, int y) {
    if ((selectedTreeNode != null) && selectedTreeNode.nodeTypeDesc.equals("MODULE")) {
    fm.cm.sendString("Do Nothing");
    } else {
    fm.cm.sendString("Launch form");
    setEditable(false);
    setMaximumSize(new java.awt.Dimension(3200, 3200));
    setPreferredSize(new java.awt.Dimension(800, 100));
    setShowsRootHandles(false);
    setLargeModel(false);
    setRootVisible(false);
    setDragEnabled(false);
    DefaultTreeModel treeNavigatorModel = new DefaultTreeModel(fm.treeNavigatorNodeArray[fm.rootNode], true);
    treeModel.addTreeModelListener(new NavigatorTreeModelListener());
    setModel(treeNavigatorModel);
    expandAll(this);
    try {
    jbInit();
    } catch (Exception e) {
    e.printStackTrace();
    public void expandAll(JTree tree) {
    int row = 0;
    while (row < tree.getRowCount()) {
    tree.expandRow(row);
    row++;
    private void jbInit() throws Exception {
    this.setSize(new Dimension(286, 383));
    TreeNavigatorCellRenderer renderer = new TreeNavigatorCellRenderer(fm);
    this.setCellRenderer(renderer);
    class NavigatorTreeModelListener implements TreeModelListener {
    public void treeNodesChanged(TreeModelEvent e) {
    TreeNavigatorNode node;
    node = (TreeNavigatorNode)(e.getTreePath().getLastPathComponent());
    * If the event lists children, then the changed
    * node is the child of the node we've already
    * gotten. Otherwise, the changed node and the
    * specified node are the same.
    try {
    int index = e.getChildIndices()[0];
    node = (TreeNavigatorNode)(node.getChildAt(index));
    } catch (NullPointerException exc) {
    public void treeNodesInserted(TreeModelEvent e) {
    public void treeNodesRemoved(TreeModelEvent e) {
    public void treeStructureChanged(TreeModelEvent e) {
    }

  • Compilation errors with boost 1.36

    Hi,
    My compiler
    CC: Sun WorkShop 6 update 2 C++ 5.3 Patch 111685-08 2002/06/02
    I am getting the followin*g errors when trying to compile
    Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    "./boost/math/tools/precision.hpp", line 108: Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    "./boost/math/tools/precision.hpp", line 116: Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    "./boost/math/tools/precision.hpp", line 122: Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    "./boost/math/tools/precision.hpp", line 128: Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    "./boost/math/tools/precision.hpp", line 141: Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    "./boost/math/tools/precision.hpp", line 172: Error: Default arguments cannot be added in later declarations of the template function in the same scope.
    I have done configuration as following
    %> ./configure with-toolset=sun prefix=/u/jn/boost/boost_1_36_0
    my usr-config.jam file looks as below
    # Boost.Build Configuration
    # Automatically generated by Boost configure
    # Compiler configuration
    using sun : 6 : /home/nfs/sollocal/beatlehome1/F6U2/SUNWspro/bin/CC : <stdlib>sun-stlport
    <cxxflags>-library=stlport4 -m64 -xcode=pic32 -erroff=wvarhidemem,hidevf,hidevfinvb -errtag
    s=yes <linkflags>-library=stlport4 -m64 ;
    # Python configuration
    using python : 2.6 : /usr/local ;
    my Makefile
    BJAM=./tools/jam/src/bin.solaris/bjam
    BJAM_CONFIG= -sICU_PATH=/usr
    prefix=/u/jnarayan/boost/boost_1_36_0
    exec_prefix=$(prefix)
    libdir=$(exec_prefix)/lib
    includedir=$(prefix)/include
    LIBS=
    all: .dummy
    @echo "$(BJAM) $(BJAM_CONFIG) --user-config=user-config.jam $(LIBS)"
    @$(BJAM) $(BJAM_CONFIG) --user-config=user-config.jam $(LIBS) || \
    echo "Not all Boost libraries built properly."
    clean: .dummy
    rm -rf bin.v2
    distclean: clean
    rm -rf Makefile config.log
    check: .dummy
    @cd status && ../$(BJAM) $(BJAM_CONFIG) --user-config=../user-config.jam || echo "S
    ome Boost regression tests failed. This is normal for many compilers."
    install: .dummy
    @echo "$(BJAM) $(BJAM_CONFIG) address-model=64 user-config=user-config.jam pref
    ix=$(prefix) exec-prefix=$(exec_prefix) libdir=$(libdir) --includedir=$(includedir) $(L
    IBS) install"
    @$(BJAM) $(BJAM_CONFIG) address-model=64 --user-config=user-config.jam --prefix=$(p
    refix) --exec-prefix=$(exec_prefix) --libdir=$(libdir) --includedir=$(includedir) $(LIBS) i
    nstall || echo "Not all Boost libraries built properly."
    .dummy:
    thanks in advance for your help

    BOOST cannot be compiled with WS6u2.
    The oldest compiler that can build BOOST is Sun Studio 11 (C++ 5.8).
    You will have better luck with Sun Studio 12 (C++ 5.9). Both Studio 11 and Studio 12 are free.
    Get Sun Studio 12 here:
    [http://developers.sun.com/sunstudio/]
    Sun Studio 12 requires Solaris 9, 10, or Open Solaris.
    If you are running Solaris 8, get Sun Studio 11 instead:
    [http://developers.sun.com/sunstudio/products/previous/11/index.jsp]
    After installing the appropriate version of Sun Studio, get all current patches for it here:
    [http://developers.sun.com/sunstudio/downloads/patches/index.jsp]
    Then check Simon's blog for advice on building BOOST with Sun Studio 11 or 12.
    [http://blogs.sun.com/sga/category/Boost]

  • Compilation error with (amp) restriction specifier in C++ AMP

    Hi,
    [double post from :
    original post ]
    I'm using C++ AMP (I'm not that experienced with C++ and I'm new to AMP, so I have to stumble through this stuff) But I thought I had this code working, but now I'm getting the following error:
    Error    1    error C3930: 'WRC_Raytracer::RaytracerRTC::RenderSceneWithAMP::<lambda_c13eb21eb34534d03d408733745bcf16>::operator ()' : no overloaded function has restriction specifiers that are compatible with the ambient
    context 'Concurrency::_Parallel_for_impl'
    Here is my parallel loop (cut down slightly to focus on the issue):
    [code]
        parallel_for(0, 720 * 576, 1, [w, cBuffer, pixelDataView](int i) restrict(amp)
                    // compute x and y for the given index
                    float x = (float)(i % w);
                    float y = (float)(i / w);
                    // convert color from {0,1}f to {0,255}b
                    int bInt, gInt, rInt;
                    bInt = (int) (min(x/719.f, 1) * 255);
                    gInt = (int) (min(y/575.f, 1) * 255);
                    rInt = (int) (min(0, 1) * 255);
                    // represent color data as (int)argb
                    int pixelAsInt = (255 << 24) + (rInt << 16) + (gInt << 8) + bInt;
                    // update pixelData element
                    pixelDataView[i] = pixelAsInt;
    [/code]              
    Can anyone see what's wrong here ? As I said, I'm sure this was working yesterday, and I did something just before shutting down, and now it's not working.
    Edit : I tried the parallel_for_each loop that I had started with. And that actually does work ...
    parallel_for_each(pixelDataView.extent,[=](index<1> idx) restrict(amp)

    Hello Gavin, thank you for your question.
    Note that parallel_for_each (more precisely, the overloads that accept extent arguments and take a restrict(amp) functional parameter) is the unique entry-point for C++ AMP execution. Other functions in the concurrency namespace, such as parallel_for,
    are unrelated, and stem from a different technology (PPL). Since restrict(amp) is specific to C++ AMP, trying to use a restrict(amp) functional object in any context but that of C++ AMP execution, is not possible - hence the compiler error
    you were seeing. Hopefully this turns out helpful for you. Also, congratulations for picking up C++ AMP, I hope you like it! Cheers!

  • Compiler error with forte 6.2 - assertion failed in sp_interface.cc

    I have a compilation error when compiling on my Ultra 10
    using Forte 6.2 C compiler (5.3). Here's the line:
    teds@enigma[195]% cc -xtarget=ultra3 -xarch=v8plusb -dalign -fns -fsimple=2 -ftrap=%none -xlibmil !!
    cc -xtarget=ultra3 -xarch=v8plusb -dalign -fns -fsimple=2 -ftrap=%none -xlibmil -xO4 -DCMO_DEBUG_DETAIL -DUSE_DATACONN -c cmoisubs.c -o cmoisubs.o
    cg: assertion failed in file ../src/ms_pipe/sp_interface.cc at line 689
    cg: Internal error: constval annotation set on reg with multiple defs
    cg: 1 errors
    cc: cg failed for cmoisubs.c
    teds@enigma[196]%
    Does anyone have any ideas?
    Thanks,
    Ted

    Hi There,
    Form the error message it seems like a bug in cg.
    Try the follwoing option and see if the bug goes away.
    -Qoption cg -O0 or use -Qms_pipe-off.
    Please refer C user's guide for usage.
    ....jagruti
    Developers Technical Support
    Sun Microsystems, http://www.sun.com/developers/support

  • Compilation Error with Solaris8

    Hi ,
    I am getting a queer compilation error when compiling a simple C++ program on
    Solaris8 . The error does not occur with solaris7 . I have inclued the program
    and the error message . Can you give me some tips to overcome this problem .
    #include <iostream.h>
    int main ( void)
         cout << "hello world" ;
    /*************COMPILATION ERRROS ***************/
    "/usr/include/iso/wchar_iso.h", line 100: Error: Multiple declaration for mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/./iosfwd", line 51: Error: The name mbstate_t is ambiguous, std::mbstate_t and std::mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/./iosfwd", line 78: Error: The name mbstate_t is ambiguous, std::mbstate_t and std::mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/rw/iotraits", line 56: Error: The name mbstate_t is ambiguous, std::mbstate_t and std::mbstate_t.
    4 Error(s) detected.
    Regards,
    vichu

    Thanks! However, my sample code does not inclide iostream.
    #include <string>
    main() {
    string s = "123asd";
    exit(0);
    and there is the output
    hwang@jazz: /opt/SUNWspro/SC5.0/bin/CC test.C
    "/usr/include/wchar_impl.h", line 24: Error: Multiple declaration for __mbstate_t.
    "/usr/include/wchar.h", line 90: Error: Multiple declaration for mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/./iosfwd", line 37: Error: The name __mbstate_t is ambiguous,
    __mbstate_t and __mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/./iosfwd", line 45: Error: Multiple declaration for mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/rw/iotraits", line 37: Error: The name __mbstate_t is ambiguou
    s, __mbstate_t and __mbstate_t.
    "/opt/SUNWspro/SC5.0/include/CC/rw/iotraits", line 57: Error: Multiple declaration for mbstate
    _t.
    "test.C", line 4: Error: string is not defined.
    "test.C", line 4: Error: Cannot use const char* to initialize int.
    8 Error(s) detected.
    Any ideas?
    Thanks again

Maybe you are looking for