Java stored procedure not working

I have done the following:
loadjava -user lodonnel/lodonnel@albacore:1521:DEVAN -thin -force -resolver "((* lodonnell) (* public) (* -))" -v c:/usr/lod/java/dev/dbDir/displayStringsDB.jar
Then:
CREATE OR REPLACE FUNCTION LODONNEL.getSellingTitleDefinition( sellingID
NUMBER, week VARCHAR2, netID NUMBER, moduleID NUMBER)
RETURN VARCHAR2 AS LANGUAGE JAVA NAME
'com.msa.gabriel.share.displaystrings.util.DatabaseAccess.getSellingTitleDefinition( int, java.lang.String, int, int ) return java.lang.String';
Variable myString VARCHAR2;
Call getSellingTitleDefinition( 3247, '02-11-2002', 2, 2) INTO :myString;
I receive the following error:
Message 1: ORA-29532: Java call terminated by uncaught Java exception: java.lang.VerifyError: Error detected by bytecode verifier when class was created
Executing Command:
Call getSellingTitleDefinition( 3247, '02-11-2002', 2, 2) INTO :myString
Can someone help me determine where to look for this problem?
The java classes being loaded do contain references to classes that I have not included in the jar, but from what I read the loadjava command I made should allow this. The code that would run in the procedure will not call any of the referenced classes that are not loaded here.

I cut out all the functionality, and these are the two classes I am trying to load and run:
package com.bob.gabriel.share.displaystrings.util;
import java.sql.SQLException;
import java.util.HashMap;
import com.bob.media.displaystrings.util.DisplayStrings;
public class DatabaseAccess {
public static String getSellingTitleDefinition( int sellingID,
                              String week, int
                              netID, int
                              moduleID ) throws
     SQLException {
     HashMap databaseArgs = new HashMap();
     databaseArgs.put( "ID", new Integer( sellingID) );
     databaseArgs.put( "WEEK", week );
     HashMap formatterArgs = new HashMap();
     formatterArgs.put( "NETWORKID", new Integer( netID ));
     formatterArgs.put( "MODULEID", new Integer( moduleID ));
     return DisplayStrings.getDisplayString();
package com.bob.media.displaystrings.util;
import java.util.Collection;
import java.util.HashMap;
import java.sql.SQLException;
public class DisplayStrings {
public static String getDisplayString() throws SQLException {
     return "woohoo!";
* This static method is used as the common interface to return the specified formatted string.
* @return formatted String to display on a UI
* @param String - some kind of indicator of class that knows how to retrieve data?
* @param HashMap - map of args needed to get the requested data.
* @return formatted String to display on a UI
* @param HashMap - map of args needed to get the format
* information of the requested data.
public static String getDisplayString( String type, HashMap databaseArgs, HashMap formatterArgs ) throws SQLException {
     try
//      System.out.println( "in getDisplayString" );
//      DisplayStringsDAO dao = getDAO( type );
//      System.out.println( "got dao: " + dao );
//      List data = dao.getUnparsedData( databaseArgs );
//      System.out.println( "got List of data:" + data );
//      Formatter formatter = getFormatter( type );
//      System.out.println( "got formatter" );
//      formatter.initialize( formatterArgs );
//      System.out.println( "initialized formatter" );
//      return formatter.format( data );
     return "got here am ok";
     catch ( Exception e )
     throw new SQLException ( "could not format requested string. " +
               e.getMessage() );
I build a jar file for them called displayStrings.jar
I use the following load command:
loadjava -user lodonnel/lodonnel@albacore:1521:DEVAN -thin -force -resolver "((* lodonnell) (* public) (* -))" -grant public -v c:/usr/lod/java/dev/dbDir/displayStringsDB.jar
and the following create function command:
CREATE OR REPLACE FUNCTION LODONNEL.getSellingTitleDefinition( sellingID
NUMBER, week VARCHAR2, netID NUMBER, moduleID NUMBER) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'com.bob.gabriel.share.displaystrings.util.DatabaseAccess.getSellingTitleDefinition( int, java.lang.String, int, int ) return java.lang.String';
When I try this in SQLPlus:
call getSellingTitleDefinition( 3247, '02-11-2002', 2, 2) into :theString;
I get this:
call getSellingTitleDefinition( 3247, '02-11-2002', 2, 2) into :theString
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.VerifyError: Error detected by bytecode verifier when class was
created
Classes were compiled and jar build using jdk1.3.1 and using ant.

Similar Messages

  • Oracle Stored Procedure not working

    Hi Guy's,
    I want to connect directly from Visual Composer to Oracle Database 10.2.x.x using Oracle Stored Procedure and JDBC System to demonstrate how easy you can show data vith VC. So I have created a simple Oracle Stored Procedure, a JDBC System with a valid alias, User mapping (Portal User --> Oracle User).
    When I invoke the stored procedure I receive the following error: "Portal request Failed (Could not execute stored procedure)". The Stored Procedure is working fine in Oracle iSQL*Plus.
    Any idea's?
    Thanks,
    Ridouan

    Hi,
    did you use the portal JDBC as it is described here:
    <a href="https://wiki.sdn.sap.com/wiki/display/VC/Cannotseetables">https://wiki.sdn.sap.com/wiki/display/VC/Cannotseetables</a>
    Best Regards,
    Marcel

  • MultiSelect Parameter with Stored Procedure not working

    I am using Crystal Reports 2008 and SQL Server 2008. I am using a stored procedure which works with a multiselect in SQL side. I am using a string to table utility function in the where clause with the In statment like below:
    WHERE FORMULARY_ID in
    --(@FORMULARY_ID)
      (SELECT Extractedtext
       FROM ClarityTST.[rpt].[LHfn_StringToTable]( @FORMULARY_ID, ',') ) 
    When I try to use the stored procedure I get an error message:
    "The stored procedure cannot accept multiple values. Please ensure that the multiple value is set to False:"
    I would like to use it with multiple parameters.

    Crystal uses arrays to handle multiple values.  As far as I'm aware, there is no way to get a multi-valued report parameter into SQL (command or SP) directly.  In the past, I have used a "shell" main report that gets the parameters, used Join() to concatenate the selected values into a single string, then pass that to the "main" subreport, and into its SQL or SP.  The SQL than would need to find the database field in the string.  If you make the string passed to the subreport valid SQL for an IN clause, you could do it that way, too.
    HTH,
    Carl

  • JDBC stored procedure not working in Weblogic 12.1.3

    Hi,
    We are migrating from WLS 12.1.2 to 12.1.3.
    We have a JDBC stored procedure which used to work correctly under 12.1.2. I understand that 12.1.2 uses ojdbc5/ojdbc6 jars (11.2.0.x). After migrating to 12.1.3, the stored procedure is not working.
    We have narrowed it down to the different between 12.1.2 using ojdbc5/6 and 12.1.3 using ojdbc7 jars, though we do not understand what the difference here is.
    Connection connection = getConnection();
    CallableStatement callableStatement = connection.prepareCall("{call RECEIPT_LOG (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
    callableStatement.registerOutParameter("PIO_RECEIPT_LOG_ID", java.sql.Types.INTEGER);
    callableStatement.setLong("PIO_RECEIPT_LOG_ID", 0);
    callableStatement.setString("PIO_DRAWER_NAME", request.getDrawerName());
    callableStatement.setString("PIO_DRAWER_FIRST_NAME", request.getDrawerFirstName());
    callableStatement.setString("PIO_DRAWER_OTHER_NAMES", "");
    callableStatement.setString("PIO_DRAWER_STREET_NO", "");
    callableStatement.setString("PIO_DRAWER_STREET", "");
    callableStatement.setString("PIO_DRAWER_LOCALITY", "");
    callableStatement.setLong("PIO_DRAWER_POSTCODE", 0);
    callableStatement.setString("PI_PAYMENT_TYPE", request.getPiPaymentType());
    callableStatement.setLong("PI_APPLICATION_ID", request.getApplicationId());
    callableStatement.setString("PI_PRIMARY_ID", request.getPiPrimaryId());
    callableStatement.setString("PI_SECONDARY_ID", request.getPiSecondaryId());
    callableStatement.setDouble("PI_AMOUNT", request.getPiAmount());
    callableStatement.setInt("PI_TAX_AMOUNT", 0);
    callableStatement.setNull("PI_VPC_TXNRESPONSECODE", java.sql.Types.VARCHAR);
    callableStatement.setInt("PI_VPC_TRANSACTIONNO", 0);
    callableStatement.setString("PI_VPC_MESSAGE", "");
    callableStatement.setString("PI_VPC_ACQRESPONSECODE", "");
    callableStatement.setString("PI_VPC_RECEIPTNO", "");
    callableStatement.setString("PI_VPC_BATCHNO", "");
    callableStatement.setString("PI_VPC_CARD", "");
    callableStatement.setString("PI_VPC_MERCHTXNREF", "");
    callableStatement.setString("PI_VPC_MERCHANT", "");
    callableStatement.setString("PI_VPC_ORDERINFO", "");
    callableStatement.setInt("PI_VPC_AMOUNT", 0);
    callableStatement.setString("PI_VPC_AUTHORIZEID", "");
    callableStatement.registerOutParameter("PO_RECEIPT_NO", java.sql.Types.VARCHAR);
    callableStatement.registerOutParameter("PO_SOURCE_ID", java.sql.Types.INTEGER);
    callableStatement.registerOutParameter("PO_PAYMENT_METHOD_TEXT", java.sql.Types.VARCHAR);
    callableStatement.registerOutParameter("PO_CREATE_COMMENT", java.sql.Types.VARCHAR);
    callableStatement.registerOutParameter("PO_ERROR_MESSAGE", java.sql.Types.VARCHAR);
    boolean isSuccessful = callableStatement.execute();
    Long receiptLogId = callableStatement.getLong("PIO_RECEIPT_LOG_ID");
    Here, when the callableStatement.execute() is fired, the isSuccessful is false and the output parameter receiptLogId is 0
    Any help appreciated.
    Regards,
    Rahul

    Hi All,
    We still haven't figured out what the problem is with JDBC when using ojdbc7.jar but, as an alternate solution we ported the code to Spring JDBC and got it working.
    Regards,
    Rahul

  • Exec stored procedure from another stored procedure - not working

    Hey, we've got a bunch of .sql files that we run, and some of them are stored procedures. Our programs call the stored procedures from within the .sql files and that works, but we've tried calling a stored procedure from another stored procedure and it won't compile. The syntax looks the same, and we can run that second stored procedure from the SQL*Plus command prompt just fine, so we know it's in there. It doesn't matter whether we type exec or execute in the first stored procedure--it still gives us a compilation error. Here's the relevant bit of the code:
            delete CMHISTORYINDEX;
            commit;
            exec SP_DAILY_TOTAL;
    END SP_DAILY_CLOSING;
    /Here's where we go into SQL*Plus and try to compile it:
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
    With the Partitioning, Real Application Clusters, OLAP and Data Mining options
    SQL> @sp_daily_closing.sql
    Warning: Procedure created with compilation errors.
    SQL> show errors
    Errors for PROCEDURE SP_DAILY_CLOSING:
    LINE/COL ERROR
    34/7     PLS-00103: Encountered the symbol "SP_DAILY_TOTAL" when expecting
             one of the following:
             := . ( @ % ;
             The symbol ":=" was substituted for "SP_DAILY_TOTAL" to continue.
    SQL>We've also tried changing SP_DAILY_CLOSING to lowercase, but it doesn't seem to help. As I mentioned before, we can type that same sort of thing in .sql files that are not stored procedures and the exec is compiled fine and runs correctly. What are we doing wrong?

    In the stored procedure remove "exec" :
            delete CMHISTORYINDEX;
            commit;
            SP_DAILY_TOTAL;
    END SP_DAILY_CLOSING;

  • Stored procedures not working after migrating from 8i to 10g

    The Oracle stored procedures are generating an error following upgrading a ColdFusion web application from Oracle8i to 10g release 2.
    "Error","jrpp-102","05/28/08","13:35:09","insite","Error Executing Database Query.[Macromedia][Oracle JDBC Driver][Oracle]ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'S_DEFAULT_LETTER_SETTING' ORA-06550: line 1, column 7: PL/SQL: Statement ignored The specific sequence of files included or processed is: new_letter.cfm, line: 63 "
    I've been looking at this for about 3 days with a colleague in the office. We can resolve this be recreating the stored procedure with a new name (e.g. adding the suffix "_v2"). Its not really practical for us to do this throughout the system. Anyone know what the root cause might be?
    I'm currently connecting to Oracle10g using SQLTools and Oracle8 client. I've yet to upgrade to Oracle10 client.
    I've tried selecting all the stored procedures and re-compiling them but it appeared to make no difference.

    The Oracle stored procedures are generating an error following upgrading a ColdFusion web application from Oracle8i to 10g release 2.
    "Error","jrpp-102","05/28/08","13:35:09","insite","Error Executing Database Query.[Macromedia][Oracle JDBC Driver][Oracle]ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'S_DEFAULT_LETTER_SETTING' ORA-06550: line 1, column 7: PL/SQL: Statement ignored The specific sequence of files included or processed is: new_letter.cfm, line: 63 "
    I've been looking at this for about 3 days with a colleague in the office. We can resolve this be recreating the stored procedure with a new name (e.g. adding the suffix "_v2"). Its not really practical for us to do this throughout the system. Anyone know what the root cause might be?
    I'm currently connecting to Oracle10g using SQLTools and Oracle8 client. I've yet to upgrade to Oracle10 client.
    I've tried selecting all the stored procedures and re-compiling them but it appeared to make no difference.

  • Insert Stored Procedure not working

    I'm trying to insert some data, using a stored procedure. I cannot see what seems to be the problem in my procedure.
    PROCEDURE SP_INSPROCDETAILS(I_INITD IN INITIATIVEMASTER.INITIATIVEID%TYPE,
    -- I_INITD = 5414
    I_CNTID IN COUNTRYMASTER.COUNTRYID%TYPE,
    -- I_CNTID = 5
    I_USERID IN USERMASTER.USERID%TYPE,
    -- I_USERID = 5405
    I_DETAIL IN VARCHAR2,
    -- STRING THATWILL COME FROM UI
    -- I_DETAIL = #10414~1234567890~1234567890~test-PONumber~1~1~1~5128~Executor for PO1
    I_DELIMITER_FIRST IN VARCHAR2, -- '~'
    I_DELIMITER_SECOND IN VARCHAR2, - '#'
    O_ERRCODE OUT VARCHAR2,
    O_ERRMSG OUT VARCHAR2)
    IS
    ARR_STRING VAR_TAB;
    ARR_STRING2 VAR_TAB;
    V_ID NUMBER;
    VAR_ESTIMATEDDATE VARCHAR2(500);
    VAR_DODATE VARCHAR2(500);
    V_INITID INITIATIVEDETAILS.INITDETAILSID%TYPE;
    V_INTRANET USERMASTER.INTRANETID%TYPE;
    V_CNT NUMBER;
    V_CREATED PROCUREMENTDETAILS.CREATEDBY%TYPE;
    V_DATE PROCUREMENTDETAILS.CREATEDDATE%TYPE;
    VAR_FLOAT PROCUREMENTDETAILS.POPRICE%TYPE;
    VAR_REPLACE VARCHAR2(500);
    BEGIN
    ---SELECT INITDETAILSID FROM INITIATIVE AND COUNTRY
    SELECT INTD.INITDETAILSID
    INTO V_INITID
    FROM INITIATIVEDETAILS INTD
    WHERE INTD.INITIATIVEID = I_INITD AND ( INTD.COUNTRYID = I_CNTID
    OR INTD.COUNTRYID IS NULL);
    --SELECT INTRANETID FROM USERID
    SELECT U.INTRANETID
    INTO V_INTRANET
    FROM USERMASTER U
    WHERE U.USERID = I_USERID;
    ---CHECKING IF DATA IS PRESENT IN PROCUREMENT TABLE IF PRESNT THEN DELETE AND REINSERT IT
    SELECT COUNT(*)
    INTO V_CNT
    FROM PROCUREMENTDETAILS PC
    WHERE PC.INITDETAILSID = V_INITID;
    IF V_CNT > 0 THEN
    --TAKING THE CREATEDBY AND CREATEDDATE FOR THAT INITIATIVEDETAILSID
    SELECT DISTINCT PC.CREATEDBY, PC.CREATEDDATE
    INTO V_CREATED, V_DATE
    FROM PROCUREMENTDETAILS PC
    WHERE PC.INITDETAILSID = V_INITID;
    DELETE FROM PROCUREMENTDETAILS PC WHERE PC.INITDETAILSID = V_INITID;
    ARR_STRING := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_SECOND,
    I_STRING => I_DETAIL);
    FOR I IN 1 .. ARR_STRING.COUNT LOOP
    IF ARR_STRING(I) IS NOT NULL THEN
    ARR_STRING2 := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_FIRST,
    I_STRING => ARR_STRING(I));
    VAR_DODATE :=ARR_STRING2(3);
    VAR_ESTIMATEDDATE :=ARR_STRING2(8);
    VAR_FLOAT := REPLACE (ARR_STRING2(5),',',NULL) ;
    VAR_REPLACE := REPLACE (ARR_STRING2(6),',',NULL);
    SELECT SEQ_PROCUREMENTDETAILS.NEXTVAL INTO V_ID FROM DUAL;
    INSERT INTO PROCUREMENTDETAILS
    (PROCUREMENTID,
    INITDETAILSID,
    POSMID,
    PONUMBER,
    GL,
    IO,
    POQTY,
    POPRICE,
    POVALUE,
    SUPPLIERID,
    EXECUTOR,
    CREATEDBY,
    CREATEDDATE,
    MODIFIEDBY,
    MODIFIEDDATE)
    VALUES
    (V_ID,
    V_INITID,
    ARR_STRING2(1),
    ARR_STRING2(2),
    ARR_STRING2(3),
    ARR_STRING2(4),
    ARR_STRING2(5),
    ARR_STRING2(6),
    ARR_STRING2(7),
    ARR_STRING2(8),
    ARR_STRING2(9),
    V_CREATED,
    V_DATE,
    V_INTRANET,
    SYSDATE);
    VAR_FLOAT :=NULL;
    END IF ;
    END LOOP;
    ELSE
    ARR_STRING := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_SECOND,
    I_STRING => I_DETAIL);
    FOR I IN 1 .. ARR_STRING.COUNT LOOP
    IF ARR_STRING(I) IS NOT NULL THEN
    ARR_STRING2 := PKG_COMMON.SPLIT_LIST_STRING(I_DELIMITER => I_DELIMITER_FIRST,
    I_STRING => ARR_STRING(I));
    VAR_DODATE :=ARR_STRING2(3);
    VAR_ESTIMATEDDATE :=ARR_STRING2(8);
    VAR_FLOAT := REPLACE (ARR_STRING2(5),',',NULL) ;
    VAR_REPLACE := REPLACE (ARR_STRING2(6),',',NULL);
    SELECT SEQ_PROCUREMENTDETAILS.NEXTVAL INTO V_ID FROM DUAL;
    INSERT INTO PROCUREMENTDETAILS
    (PROCUREMENTID,
    INITDETAILSID,
    POSMID,
    PONUMBER,
    GL,
    IO,
    POQTY,
    POPRICE,
    POVALUE,
    SUPPLIERID,
    EXECUTOR,
    CREATEDBY,
    CREATEDDATE,
    MODIFIEDBY,
    MODIFIEDDATE)
    VALUES
    (V_ID,
    V_INITID,
    ARR_STRING2(1),
    ARR_STRING2(2),
    ARR_STRING2(3),
    ARR_STRING2(4),
    ARR_STRING2(5),
    ARR_STRING2(6),
    ARR_STRING2(7),
    ARR_STRING2(8),
    ARR_STRING2(9),
    V_CREATED,
    V_DATE,
    V_INTRANET,
    SYSDATE);
    END IF ;
    END LOOP;
    END IF ;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    O_ERRCODE := 'E001';
    O_ERRMSG := 'ERROR ' || TO_CHAR(SQLCODE) || ': ' || SQLERRM;
    WHEN OTHERS THEN
    O_ERRCODE := 'E005';
    O_ERRMSG := 'ERROR ' || TO_CHAR(SQLCODE) || ': ' || SQLERRM;
    END SP_INSPROCDETAILS;

    Hi,
    I cannot see what seems to be the problem in my procedure.Hmm.. i cannot see the procedure at all.
    Next time please format your code.
    And you should have mentioned the problem as My procedure does not compile
    When you say problem there are N possibilities (n tends to infinity)
    Anyway, in your case
    I_DELIMITER_SECOND IN VARCHAR2, - '#'What is this doing in teh parameters?
    Either make it as default or comment it completely. like this
    I__DELIMITER_SECOND IN VARCHAR2, -- '#'Hope that helps.
    Regards,
    Bhushan

  • CASE in Stored Procedure Not Working

    Why is this not working?
    SET NOCOUNT ON;
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    SELECT
    dbo.Components.*,
    CASE ISNULL(dbo.Components.MarkupPrice,0)
    WHEN 0 THEN dbo.Components.Quantity * dbo.Components.UnitCost.
    ELSE dbo.Components.Quantity * dbo.Components.MarkupPrice END AS ExtCost,
    FROM ...
    Error Message
    Msg 156, Level 15, State 1, Procedure procGetReportSpecBook, Line 64
    Incorrect syntax near the keyword 'ELSE'.
    Thanks!

    Please try below instead of THE case when in Your code:
    Case when ISNULL(dbo.components.markupprice,0)= 0
    THEN dbo.components.quantity*dbo.components.unitcost
    Else dbo.components.quantity*dbo.components.markupprice
    End as ExtCost
    OR
    Case when COALESCE(dbo.components.markupprice,0)= 0
    THEN dbo.components.quantity*dbo.components.unitcost
    Else dbo.components.quantity*dbo.components.markupprice
    End as ExtCost
    OR
    Case when dbo.components.markupprice IS NULL
    THEN dbo.components.quantity*dbo.components.unitcost
    Else dbo.components.quantity*dbo.components.markupprice
    End as ExtCost
    Regards, Reshma
    Please Vote as Helpful if an answer is helpful and/or Please mark Proposed as Answer or Mark As Answer when question is answered

  • Stored procedure not working (warning only my second written)

    I am now trying to get my 2nd SP to work. Any help with the problem I'm having would be greatly appreciated. This is not a complicated SP but I am creating dynamic sql. when running in TOAD as a straight SQL I was getting problems with the Execute immediate so I compiled as a SP to see if it resovled. Receiving the following error message:
    ORA-00936: missing expression
    ORA-06512: at "INSPQA.ODS_MODIFER_EXTRACT", line 32
    ORA-06512: at line 2
    Process exited.
    and here is the code
    PROCEDURE ods_modifer_extract AS
         TABLENAME VARCHAR2(100);
         TABLEXREF VARCHAR2(100);
         PERCENT VARCHAR2(3);
         VALUE VARCHAR2(100);
         DESCRIPTION VARCHAR2(100);
         sql_stmt VARCHAR2(1000);
         final_sql_stmt VARCHAR2(1000);
         CURSOR t1 IS
         SELECT XREFTABLE, TABLENAME, PERCENTAGE FROM ODS_MODIFIER_CONTROL;
    BEGIN
    FOR table_rec IN t1 LOOP
    TABLENAME := table_rec.TABLENAME;
         TABLEXREF := table_rec.XREFTABLE;
         VALUE := TABLENAME||'.'||TABLENAME||'ID';
         DESCRIPTION := TABLENAME||'.DESCRIPTION';
         PERCENT := table_rec.PERCENTAGE;
         sql_stmt := 'SELECT '||VALUE||' AS VALUE, '||DESCRIPTION||' AS DESCRIPTION, ';
         sql_stmt := sql_stmt||''''||TABLENAME||''' AS SOURCETABLE, ';
         sql_stmt := sql_stmt||''''||TABLENAME||'ID'' AS SOURCECOLUMN, ';
         IF PERCENT = '100' THEN
              sql_stmt :=sql_stmt||PERCENT||' AS PERCENTAGE ,';
              ELSE
              sql_stmt := sql_stmt||TABLEXREF||'.PERCENTAGE AS PERCENTAGE ,';
              END IF;
         sql_stmt := sql_stmt||' ODS_INSPECTION_EXTRACT.INSPECTIONEVENTID, ODS_INSPECTION_EXTRACT.OCCURRENCEDATE ';
         sql_stmt := sql_stmt||'FROM ODS_INSPECTION_EXTRACT, '||TABLEXREF||', '||TABLENAME;
         sql_stmt := sql_stmt||' WHERE ODS_INSPECTION_EXTRACT.ROOFFEATURESID = '||TABLEXREF||'.ROOFFEATURESID AND ';
         sql_stmt := sql_stmt||TABLEXREF||'.'||TABLENAME||'ID = '||TABLENAME||'.'||TABLENAME||'ID';
         final_sql_stmt := 'INSERT INTO ODS_MODIFIER_EXTRACT VALUES ('||sql_stmt||')';
         EXECUTE IMMEDIATE final_sql_stmt;
    END LOOP;
    END;

    final_sql_stmt := 'INSERT INTO ODS_MODIFIER_EXTRACT
    CT VALUES ('||sql_stmt||')';
         EXECUTE IMMEDIATE final_sql_stmt;
    END LOOP;
    END;Take the VALUES word out of the final_sql_stmt. Should work.

  • Stored Procedure Not working

    hi !
    I hav a simple SP,
    If @Transaction_type in ('a','u') and @object_type = 77
    Begin
    select @Error = 1, @error_message = 'Budget ***'
    end
    But whenever i do changes(updation) the error is not appearing.
    Does this SP correct?

    Hello,
    The Object_Type and Transaction_Type are both Varchar and should be enclosed in single quote, which you have already done..
    Using the error number and error message in a single SELECT statement is needed for the error to display
    Take a look at this
    IF @object_type IN ('77', '78', '91') AND @Transaction_type IN ('A','U')
    BEGIN
    Select @error = 1, @error_message = 'Budget'
    END

  • Passing array from java stored procedure to plsql

    I have a java store procedure that is parsing an xml document and returning element values to my plsql application(8.1.7). I'm mapping a java.lang.String return type to VARCHAR2. However I'm running into the 4k limit when trying to return a string from java that is over 4k. Truncation of varchar returning over 4k is a known issue in 8i.
    So my next idea was to split that value of the element into 2000char and put in an array then pass that back to the plsql procedure. I know that oracle.sql.ARRAY can be converted into a plsql TABLE. But I believe you can only use the oracle.sql.ARRAY type when you are doing jdbc programming and are working with a connection.
    SO FINALLY MY QUESTION IS...
    Can anyone think of a solution that will allow me to pass over 4k of character data from my java stored procedure (not jdbc), back to my plsql app?
    Thanks.

    My understanding is that oracle 8 has a 4k limitation on any plsql function return data. A varchar can hold 32k within a function/package, but it cannot return more than 4k outside it's scope.
    Do you have an example you could share where you use the clob as a return type?
    Thanks!

  • URGENT: Java stored procedure on oracle 92 database is not working

    Hi,
    I am having an issue regarding java stored procedures. I have created a java class that uses the bouncycastleprovider ( bcprov-jdk13-141.jar ) to encrypt strings. I tested against the version of the java virtual machine that comes bundled with oracle and it works perfectly. I then used JDeveloper to load the class on the database with the resolve, noverify and order flags checked and it shows no errors but when I try to execute the stored procedure it throws the following exception:
    java.lang.ExceptionInInitializerError:
    java.lang.SecurityException: Cannot set up certs for trusted CAs: java.net.MalformedURLException: no protocol: US_export_policy.jar
    at javax.crypto.SunJCE_b.<clinit>(DashoA6275)
    at javax.crypto.Cipher.a(DashoA6275)
    at javax.crypto.Cipher.getInstance(DashoA6275)
    at RijndaelEnhanced.encrypt(RijndaelEnhanced.java:57)
    at RijndaelEnhanced.encrypt(RijndaelEnhanced.java:73)
    I loaded jce1_2_2.jar, sunjce_provider.jar, bcprov-jdk13-141.jar. Also replaced the US_export_policy.jar, local_policy.jar with the unrestrictive version. I add the security provider dinamically with a call to Security.insertProviderAt(new org.bouncycastle.jce.provider.BouncyCastleProvider(), 2);
    I also did a select on the user_objects table and all the classes are in VALID status.
    When I run my application using the java virtual machine that is located under C:\Oracle\oracli9i\jdk\jre\bin directory it works fine but when I try to execute on the database it won't work. I found a bug that was if the jce1_2_1.jar file existed in the C:\Oracle\oracli9i\jdk\jre\lib\ext directory ( even if it's extension is renamed ) it won't work because the certification file had expired but I don't know if this has anything to do with this error.
    Am I missing something?
    Please I need an urgent solution to this problem.
    Thanks in advance.
    Bruno Oliveira

    SomeoneElse wrote:
    Waaaaahhhhhhh!I was just thinking the same thing.... ya beat me to it...
    To the OP:
    As an up and coming DB Developer who now works for a small tech firm straight outta college, I can tell you for sure that you will definitely not get anywhere in your impatient life... look behind your back you miserable dude, your job might be in danger since ya got a bad attitude AND you can't figure out an error you are getting from a Java SP. So instead of helping you, I am going to simply tell you how you SHOULD act in a community of practice.
    1. Be nice when looking for help
    2. BE NICE WHEN LOOKING FOR HELP!!!
    Pretty simple right?
    Know what else is really simple? Looking at the topics of each board to make sure ya post in the right board! You people disgust me; somehow getting by in your professional career acting the way you do. I sure hope your "online" persona isn't a reflection of your real attitude towards people, almost pathetic and extremely immature.
    Sorry bout the rant, it is Friday, I know :) Didn't get my coffee this morning. Have a good one all!
    -Tim

  • Is it possible to working in Java Stored Procedures with OCI driver?

    Hello ALL.
    Could you help me...
    Is it possible to working in Java Stored Procedures with OCI driver?
    I want to try to do some workaround...
    I need to work with following parametrs from Java Stored Procedures:
    DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
    String url = null;
    url = "jdbc:oracle:oci:@TEST";
    conn = DriverManager.getConnection (url,"scott","tiger");
    Is it possible?
    I tried but I have errors...
    Please, help me!
    Thanks

    You cannot call OCI functions directly from PL/SQL. You could, of course, write an external procedure that made OCI calls, though you could also write an external procedure in Java. I'm guessing the documentation is trying to convey this same information-- you would need an external procedure that used OCI if you wanted to use the old-school interfaces for LONG and LOB data types. If you converted to using LOBs rather than LONGs, you could do everything in PL/SQL.
    Justin

  • Want the "System.out.println()" that is within the java stored procedure works?

    hello
    i write a java stored procedure,and put a line as "System.out.println(...)" within the procedure,after publish it,i can test it within the sqlplus by invoke following command:
    SQL>set serveroutput on;
    SQL>call dbms_java.set_output(....);
    but when i test it within the jdeveloper9.0.3,it can't be print,why?
    thank you!

    You can try this:
    DBMS_OUTPUT.enable(100000);
    DBMS_JAVA.set_output(100000);
    HTH,
    Robert

  • Unable to access Custom UDTs returned from a Java Stored Procedure

    Hi,
    I have a UDT in the DB :-
    create type contactrecord as object (
    CN_ID NUMBER(8),
    CN_TITLE VARCHAR2(40),
    CN_FIRST_NAME VARCHAR2(25)
    and this is the corresponding java class ContactDetails.java that maps to this UDT, that I loaded in the Aurora VM.
    package package1;
    mport java.sql.SQLData;
    import java.sql.SQLException;
    import java.sql.SQLInput;
    import java.sql.SQLOutput;
    public class ContactDetails implements SQLData
    private String sql_type;
    private long CN_ID;
    private String CN_TITLE;
    private String CN_FIRST_NAME;
    public String getSQLTypeName() throws SQLException
    return this.sql_type;
    //implementation of readSql
    public void readSQL(SQLInput stream, String typeName) throws SQLException
    sql_type = typeName;
    CN_ID = stream.readLong();
    CN_TITLE = stream.readString();
    CN_FIRST_NAME = stream.readString();
    public void writeSQL(SQLOutput stream) throws SQLException
    stream.writeLong(CN_ID);
    stream.writeString(CN_TITLE);
    stream.writeString(CN_FIRST_NAME);
    //getters and setters for the class vars go here.....
    There is another class A.java that has a java stored procedure/function, which I loaded into the Aurora VM
    Here is the class.
    package package1;
    public class A
    public static ContactDetails returnObject(String name )
         ContactDetails cd = new ContactDetails();
         cd.setCN_ID(1);
    cd.setCN_FIRST_NAME(name);
    return cd;
    Then I declared the call spec for A.returnObject() as
    FUNCTION returnObject(name varchar2) return contactrecord
    AS LANGUAGE JAVA
    NAME 'package1.A.returnObject(java.lang.String) return package1.ContactDetails';
    Then I tried to call the function returnObject through JDBC calls from a class in another VM.
    When I access the object returned by the function, I get a null object.
    Here is the Client code:
    CallableStatement cs = null;
    ResultSet rs = null;
    try
    cs = conn.prepareCall("{ ? = call returnObject(?) }");
    java.util.Map map = conn.getTypeMap();
    map.put("ADMIN.CONTACTRECORD", Class.forName("package1.ContactDetails"));
    conn.setTypeMap(map);
    cs.registerOutParameter(1, OracleTypes.STRUCT, "ADMIN.CONTACTRECORD");
    cs.setString(2, "John Doe" );
    cs.execute();
    ContactDetails cd = (ContactDetails)cs.getObject(1);
    System.out.println("contact first name is:-"+cd.getCN_FIRST_NAME()); //Null Pointer here..cd is null....:(
    if (cs != null) cs.close();
    catch(Exception e)
    e.printStackTrace();
    Although If I try to access the same function from a pl/sql block, I am able
    to access the contactrecord fields.
    What could be wrong ..???
    I could not find any error with the object mapping, as it works perfectly when I interact directly from my VM to the DB,
    without going thru the aurora VM.
    I am using a OCI driver to connect to the DB via JDBC.
    Thanx in advance for any help at all.
    -sk

    Shahid,
    I too have had bad luck in many cases with the automatic translation of Java types to PL/SQL and back. I think the SYS package on the PL/SQL side which handles some of the conversion is DBMS_PICKLER (there are equivalent Java classes which do the same in that world and seem to execute automagically when a conversion is needed). You might want to double-check the data type mappings against the DOC on OTN to make sure they map 1-1. Also make sure the permissions are granted against your objects to whoever is executing them, etc. Very often, I've resorted to passing simple scalar types between the two languages as in some cases the results with complex types are inconsistent.
    Sorry this isn't much help,
    -Dan
    http://www.compuware.com/products/devpartner/db/oracle_debug.htm
    Debug PL/SQL and Java in the Oracle Database

Maybe you are looking for

  • MacBook pro can't find any wifi networks. HELP PLEASE

    Ok so my late 2011 MacBook pro15" starTed dropping out of my network every now and then. Rebooting it got it hooked back up again. Now just a few weeks ago its not picking up any real wifi networks (according to my phone and what my computer showed m

  • PSE 7 stopped launching

    I have PSE 7 it has stopped lauching - Why? I've had it for years and no problem with it. I have tried all round about ways to launch it (like rt clicking a jpeg and saying for PSE 7 to edit it) nothing works. I've gone directly to the shortcuts targ

  • [AnyConnect] No valid certificates available for authentication

    Hi, We are using Cisco Anyconnect 3.0.0629 with certificate authentication (stored in Aladdin eToken) Most of users have no problem and it works fine. When one user tried to connect, he got a lot of errors "No valid certificates available for authent

  • IDOC TO XI WITH DEDICATED QUEUE HAS STATUS 30

    Hi,  i have an interface IDOC to XI to JDBC, it has implemented a dedicated Queue, it dosnt have configured the acknowledge. it was working fine, then we implemented the dedicated queue, it works fine a cuple of thays but then the idocs start to have

  • Sender http problem

    hi, where should i change url for sender http   symbols like  / by %2F and . by %3E in the url generated by the HTTP client ? where i i find this url http://xxxxx:8000/sap/xi/adapter_plain?namespace=http%3A//sap.com/xi/yyyyy&interface=abcd&service=gh