UTL_FILE output from PL/SQL package

Hi,
Can any one tell me how I can generate a text file to see the variables of a package body. IS the following format correct where I have declared a file and then wrote a very simple statement. When I debug this package it generates an exception when it reached at
fileHandler := UTL_FILE.FOPEN('\users', 'myoutput', 'W');
I have initialised initDBNAME.ora file with utl_file_dir='Path to your directory' also. Any solution or correction in my code please.
PROCEDURE a1fdm_msql_admin_insert (
in_id IN NUMBER,
in_user IN VARCHAR2,
out_status OUT NUMBER
) IS
/* Declare criteria */
v_err_point           VARCHAR2(10);
v_lIdAdmin                NUMBER;
v_iStatus      NUMBER;
v_sTimestamp      DATE;
fileHandler UTL_FILE.FILE_TYPE;
/* Cursor to retrieve latest reading details. */
CURSOR c_get_admin_values IS
SELECT Status,
TO_DATE(Timestamp, 'DD:MM:YYYY HH24:MI:SS'),
id
FROM dbo_tbl_admin
     WHERE id = v_lIdAdmin
AND status = 1;
BEGIN
v_lIdAdmin := in_id;
fileHandler := UTL_FILE.FOPEN('\users', 'myoutput', 'W');
UTL_FILE.PUTF(fileHandler, 'Look , I am writing to a file!!!\n');
UTL_FILE.FCLOSE(fileHandler);
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = "DD:MM:YYYY HH24:MI:SS" ';
OPEN c_get_admin_values;
FETCH c_get_admin_values INTO
               v_iStatus,
               v_sTimestamp,
               v_lIdAdmin;
INSERT INTO dbo_tbl_admin@MSQL
VALUES
          (v_iStatus,
          v_sTimestamp,
               v_lIdAdmin);
CLOSE c_get_admin_values;
v_err_point := '1';
     out_status := 0;
EXCEPTION
WHEN OTHERS THEN
Unexpected error, make up error text string and call error handler.
DECLARE
v_err_stext t_error.err_stext%TYPE;
BEGIN
v_err_stext := 'p_a1fdm.a1fdm_msql_admin_insert point ' ||
v_err_point ||
' ORA' ||
to_char(SQLCODE);
p_error.log ( in_user, v_err_stext );
END; -- end nested block in when others exception handler
out_status := 99999;
END a1fdm_msql_admin_insert; -- procedure complete
Best regards,
Ghulam

Try the procedure with the additional exceptions I added and post the error you get
Create or Replace Procedure a1fdm_msql_admin_insert
         (in_id      IN  NUMBER,
          in_user    IN  VARCHAR2,
          out_status OUT NUMBER )   IS
-- Declare criteria
v_err_point    VARCHAR2(10);
v_lIdAdmin     NUMBER;
v_iStatus      NUMBER;
v_sTimestamp   DATE;
fileHandler    UTL_FILE.FILE_TYPE;
--Unexpected error, make up error text string and call error handler.
v_err_stext    t_error.err_stext%TYPE;
-- Cursor to retrieve latest reading details.
CURSOR c_get_admin_values IS
    SELECT Status, TO_DATE(Timestamp, 'DD:MM:YYYY HH24:MI:SS'), id
      FROM dbo_tbl_admin
      WHERE id = v_lIdAdmin
        AND status = 1;
BEGIN
  v_lIdAdmin := in_id;
  fileHandler := UTL_FILE.FOPEN('\users', 'myoutput', 'W');
  UTL_FILE.PUTF(fileHandler, 'Look , I am writing to a file!!!\n');
  UTL_FILE.FCLOSE(fileHandler);
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = "DD:MM:YYYY HH24:MI:SS" ';
  OPEN c_get_admin_values;
  FETCH c_get_admin_values INTO
                          v_iStatus,
                          v_sTimestamp,
                          v_lIdAdmin;
  INSERT INTO dbo_tbl_admin@MSQL
       VALUES (v_iStatus, v_sTimestamp, v_lIdAdmin);
  CLOSE c_get_admin_values;
  v_err_point := '1';
  out_status := 0;
EXCEPTION
-- It is a good idea to have the following in the exception block when using UTL_FILE
  WHEN UTL_FILE.invalid_operation  THEN
      raise_application_error(-20011,'Could not open file') ;
  WHEN UTL_FILE.invalid_filehandle  THEN
      raise_application_error(-20012,'Could not open file') ;
  WHEN UTL_FILE.read_error  THEN
      raise_application_error(-20013,'Could not open file') ;
  WHEN OTHERS THEN
      v_err_stext := 'p_a1fdm.a1fdm_msql_admin_insert point ' ||
                      v_err_point ||' ORA' ||to_char(SQLCODE);
      p_error.log ( in_user, v_err_stext );
      out_status := 99999;
END a1fdm_msql_admin_insert; -- procedure complete

Similar Messages

  • Call a unix script from pl/sql package

    Hi,
    Using 11.2.0.3 on AIX.
    Is it possible to call unix script from pl/sql package?
    I am cretaing a file in a directory but would like this to automatically be written to an archive directory as well.
    Could either use 2 utl_file.put_lines to 2 separate directories or 1 utl_file and cal script to archive file in another directory.?
    Thoughts?
    Thanks

    user5716448 wrote:
    What am I doing wrong?think how file name will look like:
    SQL> select 'file_name' || to_char(sysdate,'DD/MM/YYYY HH24:MI:SS') from dual;
    'FILE_NAME'||TO_CHAR(SYSDATE
    file_name15/08/2012 11:47:51Will AIX swallow such name? Obviously not. And, unfortunately, UTL_FILE.FCOPY doesn't raise an error in such case. So use someting like:
    UTL_FILE.FCOPY ('SOURCE_DIR',v_FILE_NAME,'DEST_DIR',v_file_name||to_char(sysdate,'DD_MM_YYYY_HH24_MI_SS'));SY.

  • Invoking Web Service From PL SQL package

    Below is the sample code to invoke web service from pl/sql package using UTL_HTTP:
    Declare
    http_req UTL_HTTP.req;
    http_resp UTL_HTTP.resp;
    Begin
    http_req :=
    UTL_HTTP.begin_request
    'http://'
    || lv_hosturl
    -- || '.net/soa-infra/services/finance_rt/Payments/paymentsprocess_client_ep',
    --new url
    || '.net/soa-infra/services/finance_rt/PaymentsReq/paymentsprocess_client_ep?WSDL',
    'POST',
    'HTTP/1.1'
    UTL_HTTP.set_header (http_req, 'Content-Type', 'text/xml');
    -- since we are dealing with plain text in XML documents
    UTL_HTTP.set_header (http_req,
    'Content-Length',
    LENGTH (lv_soap_request)
    UTL_HTTP.set_header (http_req, 'SOAPAction', '');
    -- required to specify this is a SOAP communication
    UTL_HTTP.write_text (http_req, lv_soap_request);
    http_resp := UTL_HTTP.get_response (http_req);
    UTL_HTTP.read_text (http_resp, lv_soap_respond);
    UTL_HTTP.end_response (http_resp);
    resp := XMLTYPE.createxml (lv_soap_respond);
    End;

    Hi,
    there are a lot of option to make plsql web services .
    First you can stay with jdev 10.1.3
    Use the xmldb servlets
    use jdev 11g tp4 to create plsql ws and upgrade to jdev 11g production
    And I think in the next release of jdev it will be back , there are more options which disappeared like the adf bc sdo ws or jmx datacontrol etc.
    thanks Edwin

  • Support for Creating Web Service from pl/sql package in JDeveloper 11

    We have been creating all of our web services from pl/sql packages in our Oracle database using JDeveloper 10.1.3.1. I understand that this capability is not supported in Jdev 11. We have been mandated to either move up to JDeveloper 11, or consider switching to eclipse, or even VS2008 and run .NET services from IIS. I have seen work-around solutions using TopLink and Jdev 11. Are there plans to revive this feature in the near future? We're now looking at switching to .NET since we could scrap our OAS instances and use IIS to publish web services. The only reason we were sticking with Oracle was the ease in converting all our existing package to web services with Jdev.
    Is anyone else in the same situation. If so, what solutions are you considering?

    Hi,
    there are a lot of option to make plsql web services .
    First you can stay with jdev 10.1.3
    Use the xmldb servlets
    use jdev 11g tp4 to create plsql ws and upgrade to jdev 11g production
    And I think in the next release of jdev it will be back , there are more options which disappeared like the adf bc sdo ws or jmx datacontrol etc.
    thanks Edwin

  • Problem in generate Java  from PL SQL package in Jdeveloper

    Hi
    i have problem in create java class from PL SQL package in JDeveloper.
    I use Database navigator of jdeveloper and right click on a package and choose Generate Java then in Jpublisher window choose my view Controller and accept other default values.
    I call methods of generated class in the Action of a button in my JSP page, but when I click the button it  throw null pointer exception !!! i fund one of generated method return null and it lead to this exception.
    protected DefaultContext __tx = null;
    public DefaultContext getConnectionContext() throws SQLException  {
    if (__tx==null){
    __tx = (getConnection()==null) ? DefaultContext.getDefaultContext() : new DefaultContext(getConnection());
        return __tx;
      public Connection getConnection() throws SQLException
        if (__onn!=null) return __onn;
         else if (__tx!=null) return __tx.getConnection();
         else if (__dataSource!=null) __onn= __dataSource.getConnection();
         return __onn;
    i try to generate class in Model project and create DataControl for that and use method action but noting change and i get null pointer again!!
    Jdeveloper Versino = 11.1.1.7.0

    Let me ask you another question: Why do you generate java from the package at all?
    Where do you want to call the package?
    Back to your question: you should see code like
        public void setDataSourceLocation(String dataSourceLocation) throws SQLException {
            javax.sql.DataSource dataSource;
            try {
                Class cls = Class.forName("javax.naming.InitialContext");
                Object ctx = cls.newInstance();
                java.lang.reflect.Method meth = cls.getMethod("lookup", new Class[] { String.class });
                dataSource = (javax.sql.DataSource) meth.invoke(ctx, new Object[] { "java:comp/env/" + dataSourceLocation });
                setDataSource(dataSource);
            } catch (Exception e) {
                throw new java.sql.SQLException("Error initializing DataSource at " + dataSourceLocation + ": " + e.getMessage());
    in the generated code. This code look up a datasource (which you have defined e.g. on the Weblogic Server) by calling the method
    setDataSourceLocaltion("jdbc/HRConnDS");
    This look up the datasource nad stores it in the class variable.
    Timo

  • JDev generated webservices encodes XML output from PL/SQL procedure

    I have a PL/SQL packaged procedure which takes some input parameters and produces one output parameter. The output parameter is of type CLOB and after the procedure has run, it contains a big piece of XML data.
    Using JDeveloper 10.1.3.1, I've published this packaged procedure as a webservice. The generated webservice is fine and works, except for one tiny little issue: the XML that is taken from the output parameter is encoded.
    Here is an example of the SOAP message that the webservice returns:
    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ns0="http://gbv0300u/GBV0300U.wsdl/types/"><env:Body><ns0:gbv0300uResponse
    Element><ns0:result><ns0:obvglijstOut> & gt;type>GBV0001& gt ;/type& lt;
    & gt;diensten& lt;
    & gt;dienst>some value& gt;/dienst& lt;
    & gt;/diensten& lt;
    </ns0:obvglijstOut></ns0:result></ns0:gbv0300uResponseElement></env:Body></env:Envelope>
    (I've manually added an extra space between the & and lt; or gt; to make sure a browser will not translate it into a < or >!)
    The contents of the <ns0:obvglijstOut> element are filled with the output parameter from the PL/SQL package.
    How can I change the generated webservice, so the output from the PL/SQL package is used as is instead of being encoded?

    Update: I've tested a bit more by adding some output statements to the java code that JDeveloper generated. I'm now 100% sure the PL/SQL code gives the XML data correctly to the webservice.
    At this moment my guess is that somewhere in the WSDL definition there is something that enables the encoding of the data. But I'm not sure.
    Any help is greatly appreciated.

  • Output from pl/sql procedure

    The output from my pl/sql block is not being captured in the spool file. This would help to debug.
    Thanks in advance...

    You have to put "set serveroutput on" if you use package dbms_output or check you path for spool file

  • Creating a webservice from PL/SQL Package in JDev 11g

    Hi All...
    I have a PL/SQl package and I am using JDEv 11g. I want to create it as a webservice. I want to deploy it in a remote server. Can I deploy it from my client machine. In server Weblogic already started. What are the prerequisites, that we need to deploy a wbservice. I done the following steps.
    1. Create an application.
    2. Right click the package and select Generate Java option.
    3. It create a Java class in the Application sources.
    4. Double click the class and select Create Web Service. It created the web service.
    5. When I select the webservice and click Run it shows the following error. It going to the Default \server. Actually I need it in a remote server.
    [Running application NewWebService on Server Instance DefaultServer...]
    ---- Deployment started. ---- Apr 20, 2009 1:15:40 PM
    Target platform is (Weblogic 10.3).
    Running dependency analysis...
    2009-04-20 13:15:40.205: Writing WAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService\NewWebService-LastNoWebService-webapp
    2009-04-20 13:15:40.222: Wrote WAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService\NewWebService-LastNoWebService-webapp
    2009-04-20 13:15:40.357: Writing EAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService
    2009-04-20 13:15:40.374: Wrote EAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService
    Deploying Application...
    <Apr 20, 2009 1:15:40 PM IST> <Warning> <J2EE> <BEA-160195> <The application version lifecycle event listener oracle.security.jps.wls.listeners.JpsAppVersionLifecycleListener is ignored because the application NewWebService is not versioned.>
    <Apr 20, 2009 1:15:40 PM IST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1240213540593' for task '3'. Error is: 'java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext'
    java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
         at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
         at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
         at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         Truncated. see log file for complete stacktrace
    java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
         at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
         at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
         at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         Truncated. see log file for complete stacktrace
    >
    <Apr 20, 2009 1:15:40 PM IST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating deploy task for application 'NewWebService'.>
    <Apr 20, 2009 1:15:40 PM IST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
    java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
         at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
         at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
         at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         Truncated. see log file for complete stacktrace
    java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
         at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
         at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
         at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         Truncated. see log file for complete stacktrace
    >
    [Deployer:149034]An exception occurred for task [Deployer:149026]deploy application NewWebService on DefaultServer.: sqlj.runtime.ref.DefaultContext.
    weblogic.application.WrappedDeploymentException: sqlj.runtime.ref.DefaultContext
    #### Deployment incomplete. #### Apr 20, 2009 1:15:40 PM
    oracle.jdeveloper.deploy.DeployException
         at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.doDeploymentAction(Jsr88RemoteDeployer.java:247)
         at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.deployImpl(Jsr88RemoteDeployer.java:157)
         at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
         at oracle.jdevimpl.deploy.fwk.WrappedDeployer.deployImpl(WrappedDeployer.java:39)
         at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
         at oracle.jdeveloper.deploy.common.BatchDeployer.deployImpl(BatchDeployer.java:82)
         at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
         at oracle.jdevimpl.deploy.fwk.WrappedDeployer.deployImpl(WrappedDeployer.java:39)
         at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
         at oracle.jdevimpl.deploy.fwk.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:436)
         at oracle.jdeveloper.deploy.DeploymentManager.deploy(DeploymentManager.java:209)
         at oracle.jdevimpl.runner.adrs.AdrsStarter$5$1.run(AdrsStarter.java:1365)
    Caused by: oracle.jdeveloper.deploy.DeployException
         at oracle.jdevimpl.deploy.common.Jsr88DeploymentHelper.deployApplication(Jsr88DeploymentHelper.java:413)
         at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.doDeploymentAction(Jsr88RemoteDeployer.java:238)
         ... 11 more
    Caused by: oracle.jdeveloper.deploy.DeployException: Deployment Failed
         at oracle.jdevimpl.deploy.common.Jsr88DeploymentHelper.deployApplication(Jsr88DeploymentHelper.java:395)
         ... 12 more
    #### Cannot run application NewWebService due to error deploying to DefaultServer.
    [Application NewWebService stopped and undeployed from Server Instance DefaultServer]
    6. when i goto the consoleof weblogic server, already an instance created. But nothing displayed under WebServices.
    7. Select the instance and press 'Start'. While deploying an error came.
    java.lang.Exception: [DeploymentService:290049]Deploy failed for id '1,240,213,727,265' since no targets are reachable.
    Please help me..
    its very urgent...
    Regards,
    Resmi.

    Oh, no - another very urgent question. The world must be about to end ;)
    Resmi, Have a read of [url http://forums.oracle.com/forums/thread.jspa?threadID=883293]this - JDeveloper 11g, as of today, doesn't (at least is not supposed to) support publishing PL/SQL procedures/packages as a web service.
    John

  • Passing / parsing XML String IN / OUT from PL / SQL package

    Hello, People !
    I am wondering where can I find exact info (with code sample) about following :
    We use Oracle 8.1.6 and 8.1.7. I need to pass an XML String (could be from VARCHAR2 to CLOB) from VB 6.0 to PL/SQL package. Then I need to use built in PL/SQL XML parser to parse given string (could be large hierarchy of nodes)
    and the return some kind of cursor thru I can loop and insert data into
    different db Tables. (The return value may have complex parent/child data relationship - so I am not sure If this should be a cursor)
    I looked online many site for related info - can't find what I am looking
    for - seems like should be a common question.
    Thanx a lot !

    Hello, People !
    I am wondering where can I find exact info (with code sample) about following :
    We use Oracle 8.1.6 and 8.1.7. I need to pass an XML String (could be from VARCHAR2 to CLOB) from VB 6.0 to PL/SQL package. Then I need to use built in PL/SQL XML parser to parse given string (could be large hierarchy of nodes)
    and the return some kind of cursor thru I can loop and insert data into
    different db Tables. (The return value may have complex parent/child data relationship - so I am not sure If this should be a cursor)
    I looked online many site for related info - can't find what I am looking
    for - seems like should be a common question.
    Thanx a lot !

  • Pass output from PL/SQL proc back to ODI for logging

    Hi,
    In ODI (10g), is there any way to pass output from a PL/SQL procedure back to the calling stage?
    I am working on the run time of a batch, one part of which calls a procedure and so currently black box.
    I'd like to instrument the proc so that I can see in Operator some kind of timed activity so that I can profile its activity better.
    The best I've had suggested so far is to write out to file from the procedure and then use ODI to parse this and spit it out in the stage log. I don't like this approach for two reasons:
    1) Our DBAs quite rightly get very itchy with the privs required for writing to files, and another app to read from the same
    2) It's messy :)
    Any ideas?
    thanks, Robin.

    Robin
    I don't know ODI. However if you are calling a stored proc procA and you have control over what you call, at the very least you could write a wrapper procB as
    CREATE OR REPLACE PROCEDURE PROCB (parms)
    AS
    BEGIN
    SYS.DBMS_MONITOR.SESSION_TRACE_ENABLE();
    MYUSER.PROCA(parms);
    SYS.DBMS_MONITOR.SESSION_TRACE_DISABLE();
    END;
    / If ODI sets service,module and action (as it should) then you could ask the DBA to set SERV_MOD_ACT_TRACE_ENABLE instead.
    Niall Litchfield
    http://www.orawin.info/

  • Issue generating java from pl/sql package

    Hi,
    In JDeveloper (11.1.1.6) I am having an issue generating java from a pl/sql package. When I am in the database navigator I right click on the package and select "generate java". This produces some java files, some sqlj files and a <package_name>.javatmp file. When a collegue does the same all files are generated with a .java extension. Can anyone tell me what I can do to generate all java files?
    Thanks,
    Graeme

    It turns out that I was running against a 64-bit JDK. (1.6.0_41.)
    When I changed this to run against a 32 bit JDK (also 1.6.0_41) my problem went away.
    It might be worth noting that my machine is 64 bit.

  • ADF Report output from PL\SQL Table

    Hi,
    I am some complex calcualtions in the report and the report has a fixed number of columns and reports. Is there any way i can do all the programming in pl\sql and call this procedure/package from ADF and return the pl\sql table type?
    Can i create a VO from pl\sql table?
    Thanks,
    Lakshmi.

    On Database
    create or replace type empRow as object (
    Employee_ID Number,
    First_Name Varchar2(20),
    Last_name Varchar2(25)
    create or replace type empTable as table of empRow;
    create or replace function getEmployees
    (aDepartmentID Number)
    return empTable
    PIPELINED
    as
    begin
    for rec in (select Employee_ID, First_Name, Last_name
    from employees
    where Department_ID = aDepartmentID) loop
    pipe row(new empRow(rec.Employee_ID, rec.First_Name, rec.Last_name));
    end loop;
    return;
    end;
    THEN create a VO based on this Query below:
    select * from table(getEmployees(:deptid)
    and you are ready to Go.

  • Resolve output from calling Oracle package with JavaClass

    I am using this class to call a package.function which has select statement it will returns only one records at a time. It does work but I need to get my result like say name:value,name:value,…and so on. Say I changed the package.function select statement and now I am going to get 7 column, I don’t want to go and change my java class. Would it be possible to send the result set into a java listArray or anything else….
    Again, this package always will return only one record.
    public class javaandoracle
    public static void main (String args[])
    try {         
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection myConnection = DriverManager.getConnection
    ("jdbc:oracle:thin:@dbname:1523:dev","user","password");
    CallableStatement cstmt = myConnection.prepareCall
    ("{? = call javaandoracle_pkg.get_Info(?,?)}");
    cstmt.registerOutParameter(1,OracleTypes.CURSOR);
    //we are going to pass our parameter to our function
    cstmt.setInt(2, 2811); //first parameter
    cstmt.setInt(3, 18); //second parameter
    cstmt.execute();
    ResultSet rset3;
    rset3 = ((OracleCallableStatement)cstmt).getCursor(1);
    while (rset3.next())
    System.out.println(rset3.getString(1) + ", " + rset3.getString(2) + ", " + rset3.getString(3) + ", " + rset3.getString(4) + ", " + rset3.getString(5));
    }//end try
    catch (java.sql.SQLException e) {
    System.out.println("Opps A PROBLEM !!!!!!");
    e.printStackTrace();
    System.exit (-1) ;
    }//end catch
    }//end main
    }//end javaandoracle
    Thanks

    Hello,
    I have an idea for you feel free to shoot holes in it though. The example code I am providing is pretty ugly but hopefully this will give you an idea.
    You said you wanted your function to return something similar to an array. In order to do this I'm going to use Oracle Types.
    Here is what I have created:
    //Create our object type to represent a name/value pair
    CREATE OR REPLACE
    type array_type as object(
    name varchar2(30), value varchar2(255))
    //Create a collection type of our name/value pair object
    CREATE OR REPLACE
    type array_types as table of hr.array_type
    //Here is an example function returning this array. This is a stand alone function
    // and I would never use stand alone functions, this is only for an example
    CREATE OR REPLACE
    FUNCTION array_test (p_employee_id employees.employee_id%TYPE)
    RETURN array_types
    AS
    v_rec employees%ROWTYPE;
    v_array_types array_types := array_types ();
    v_array_type array_type;
    BEGIN
    SELECT *
    INTO v_rec
    FROM employees
    WHERE employee_id = p_employee_id;
    v_array_type := array_type ('FIRST_NAME', v_rec.first_name);
    v_array_types.EXTEND;
    v_array_types (v_array_types.COUNT) := v_array_type;
    v_array_type := array_type ('LAST_NAME', v_rec.last_name);
    v_array_types.EXTEND;
    v_array_types (v_array_types.COUNT) := v_array_type;
    v_array_type := array_type ('HIRE_DATE', v_rec.hire_date);
    v_array_types.EXTEND;
    v_array_types (v_array_types.COUNT) := v_array_type;
    // need more? just add them to the array like the above is doing
    RETURN v_array_types;
    END;
    That is it for my PL/SQL code. Following is a snippet I used to get the array out:
    OracleCallableStatement stmt =
    (OracleCallableStatement)c.prepareCall("begin ? := ARRAY_TEST(206); end;");
    stmt.registerOutParameter(1, OracleTypes.ARRAY, "ARRAY_TYPES");
    stmt.executeUpdate();
    ARRAY simpleArray = stmt.getARRAY(1);
    Datum[] arr = simpleArray.getOracleArray();
    for (int i = 0; i < arr.length; i++) {
    oracle.sql.STRUCT os = (oracle.sql.STRUCT)arr;
    Object[] a = os.getAttributes();
    System.out.println("Column:" + (String)a[0] + " Value:" +
    (String)a[1]);
    Here is my output:
    Column:FIRST_NAME Value:William
    Column:LAST_NAME Value:Gietz
    Column:HIRE_DATE Value:07-JUN-94
    "Whoops, I need another column to be returned. I don't want to change my Java". All you need to do is update your stored proc:
    v_array_type := array_type ('JOB_ID', v_rec.job_id);
    v_array_types.EXTEND;
    v_array_types (v_array_types.COUNT) := v_array_type;
    And now the results are:
    Column:FIRST_NAME Value:William
    Column:LAST_NAME Value:Gietz
    Column:HIRE_DATE Value:07-JUN-94
    Column:JOB_ID Value:AC_ACCOUNT

  • Get server output from pl/sql stored procedure

    Hi Colleagues,
    I would like to get and watch the server output of my PL/SQL stored procedure
    when I run my java program and call it from. The Stored proc. uses "dbms_output.put_line".
    If it is clearly and possible (or not), will you send me your answer!
    Thanks a lot
    Ulve

    Hi,
    You can redirect the standard output to the console (i.e., the SQL output) using the
    DBMS_JAVA.SET_OUTPUT() method.
    SQL> SET SERVEROUTPUT ON
    SQL> call dbms_java.set_output (5000);But, the output is only printed when the stored procedure exits, and this setting works only for one call (i.e., the SQL call that immediately follows the invocation of DBMS_JAVA.SET_OUTPUT()). The minumum and default value is 2,000 characters and the maximum is 1,000,000 (1 million) characters. Notice the “SET SERVEROUTPUT ON” which enables displaying the outputs of stored procedures (Java or PL/SQL blocks) in SQL*Plus.
    Kuassi http://db360.blogspot.com

  • Script task to convert output from a sql query into send mail task body formatting

    SSIS 2008R2 Version
    Code from script task
       Microsoft SQL Server Integration Services Script Task
       Write scripts using Microsoft Visual C# 2008.
       The ScriptMain is the entry point class of the script.
    using System;
    using System.Data;
    using Microsoft.SqlServer.Dts.Runtime;
    using System.Windows.Forms;
    namespace ST_29dd6843bd6c4aee9b1656c1bbf55ba8.csproj
        [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
        public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
            #region VSTA generated code
            enum ScriptResults
                Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
                Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
            #endregion
            public void Main()
                Variables varCollection = null;
                string header = string.Empty;
                string message = string.Empty;
                Dts.VariableDispenser.LockForWrite("User::gsEmailMessage");
                Dts.VariableDispenser.LockForWrite("User::gsWebserviceName");
                Dts.VariableDispenser.LockForWrite("User::gsNoOfCallsInADay");
                Dts.VariableDispenser.LockForWrite("User::gsCalledBySystem");
                Dts.VariableDispenser.GetVariables(ref varCollection);
                //Set the header message for the query result
                if (varCollection["User::gsEmailMessage"].Value == string.Empty)
                    header = "Hi, Count is greater then 50 :\n\n";
                    //header = "Execute SQL task output sent using Send Email Task in SSIS:\n\n\n";
                    header += "----------------------------------------------------------------------------------------------------------------------" + "\n";
                    header += string.Format("{0}\t\t\t\t{1}\t\t{2}\n", "WebService Name", "No Of Calls In A Day", "Called By System");
                    header += "----------------------------------------------------------------------------------------------------------------------" + "\n";
                    varCollection["User::gsEmailMessage"].Value = header;
                //Format the query result with tab delimiters
                     message = String.Format("<HTML><BODY><P>{0}</P><P>{1}</P><P>{2}</P></BODY></HTML>",
                                            varCollection["User::gsWebserviceName"].Value,
                                            varCollection["User::gsNoOfCallsInADay"].Value,
                                            varCollection["User::gsCalledBySystem"].Value);
                varCollection["User::gsEmailMessage"].Value = varCollection["User::gsEmailMessage"].Value + message + "\n";
                Dts.TaskResult = (int)ScriptResults.Success;
    Above code will return data in below format and then i send this output in aemail using send mail task.
    Hi, count is greater then 50 :
    WebService Name                                                         
    No Of Calls In A Day                        Called By System
    WebServiceone                                                     1                             
    Internetbutiken
    WebServiceGetdetailstwo                                                  1                             
    Internetbutiken
    Servicenamethree                                                            2                             
    MOB
    As you can see above code is not in align as if we service name is shorter then 2nd column get disallign and its not look good.I need output should be like below.
    Hi, count is greater then 50 :
    WebService Name                                                         
    No Of Calls In A Day                        Called By System
    WebServiceone                                                              1                             
    Internetbutiken
    WebServiceGetdetailstwo                                              1                             
    Internetbutiken
    Servicenamethree                                                          2                             
    MOB
    Please suggest something...
    Thanks 
    SR_MCTS

    See code explained here
    http://microsoft-ssis.blogspot.in/2013/08/sending-mail-within-ssis-part-2-script.html
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs
    This will not help.As I am not creating smtp connectin ,send from ,send to in script task.I am just creating email body from sql output.

Maybe you are looking for

  • Okay...how do I update my apps on Itunes

    I did not see an "Update Apps" in the App store

  • Visual Composer : Sending a signal from popup to iview

    Hello, I would like to refresh a table in a parent iview from popup iview. I think about a timer. What Can I do that ? Do you have a good example or can you explain in details the process ? Best regards, Aurélien

  • Object comparison tool with reflection

    I'm writing some piece of code to compare two java objects without equals method. I use java reflection to get all the declared fields in the class of the object and all the objects that resides in it. It goes inside of all the objects and collection

  • Installing Acrobat XI Pro - only lets me install in chinese

    Hi, Trying to install Acrobat Pro XI however every install I do, it appears to install in Chinese even when I select English (both international and North American) and only install English language, when I open Adobe it's in Chinese. I've tried sett

  • AFAB - Not posting

    Hi I am facing a typical error in AFAB. While I execute in the Test mode the posting is simulated (Planned Run). If I untick test run, system says do repeat run. If I do repeat run, it goes into background process and I dont see any job created in SM