Stored Procedure output to excel

Hi Experts,
Is it possible to get an output of a Oracle stored procedure into excel. we are executing the stored proc from SQL PLUS prompt.
We are not using any reporting tools(no oracle reports to execute the stored proc)
Will appreciate all the help
Thanks

Try like this ,
set pages 0 term off head off feedback  off ;
set timming off;
SET  term off timing on feedback on
SET  MARKUP HTML ON ENTMAP ON SPOOL ON PREFORMAT OFF
spool  c:\test.xls
EXEC test_proc(par1,para2);
Print
spool off;
set timing on MARKUP HTML off;Thanks
Alen

Similar Messages

  • How to move stored procedure output to file

    Hi All,
    Thanks in advance.
    Please let me know how to move the oracle stored procedure output to the flat file.
    By
    Pyarajan

    Hi Pyarajan,
    As David posted, in the Data Flow Task (DFT), you can add an OLE DB Source, and create a connection manager to connect to the Oracle server using the Microsoft OLE DB for Oracle provider. Then, in the OLE DB Source Editor, you can set the “Data access mode”
    to “SQL command” and input the query to execute your Oracle stored procedure. To export the data to a flat file, we need to add a Flat File Destination to the DFT.
    Besides, also note that you need to install the Oracle client on this server, and you may need to edit the tnsnames.ora and sqlnet.ora files to establish the connection to Oracle successfully.
    References:
    http://commerceserverguy.wordpress.com/2011/12/04/ssis-package-tutorial/ 
    http://sqlblog.com/blogs/jorg_klein/archive/2011/06/09/ssis-connect-to-oracle-on-a-64-bit-machine.aspx 
    Regards,
    Mike Yin
    TechNet Community Support

  • PLEASE HELP! OLE DB COMMAND - capturing Stored Procedure output run from an OLE DB Command

    I've searched through the related posts but cannot find exactly what I'm looking for.
    I have an OLE DB Source that produces multiple rows (around 200) through a stored procedure. I need to take 3 values in each row and pass them to an OLE DB Command that runs another stored procedure for each row.
    What I need is to get the output of the second stored procedure. I've read posts regarding using lookup, merge join, derived column but I still don't understand exactly how to put it all together. My destination is an excel file. Once I've obtained this output,
    I believe I can figure out how to merge the OLE DB Source results and the OLE DB Command results into one table.  The output columns of the second SP are not available to be mapped to my destination file.
    I've also explored running an Execute SQL task and passing the rowset to a variable but don't know how to pass that variable into the next stored procedure and then capture the second stored procedure results.
    OLE DB Source contains Stored Procedure X:
    DECLARE @return_value int
    declare @newdate smalldatetime
    set @newdate = convert(smalldatetime,convert(varchar(10),getdate(),101))
    EXEC @return_value = [dbo].[getnumbers]
    @dtAfterDate = @newdate,
    @dtBeforeDate = '2099-12-31 5:00:00',
    @Status = 'Any'
    NEXT IN THE PIPELINE
    OLE DB Command contains Stored Procedure Y:
    EXEC [dbo].[getaddress] ?,?,?
    One more thing, CREATING A TEMP TABLE ISN'T AN OPTION!
    Thanks!

    Thanks again for your help David!  Let me rephrase.  I'm working a server that doesn't need to be altered in anyway by me.  I just need to pull the data to my server so I can use it as needed.  I can't build any links either.  The
    only other option I'd have would be coding SQL code with some sort of cursor similar to.
    EXEC
    @return_value = [dbo].[getnumbers]
    @dtAfterDate = @newdate,
    @dtBeforeDate = '2099-12-31 5:00:00',
    @Status = 'Any'
    For every number in the resulting table:
    EXEC
    [dbo].[getaddress] something1, something2, something 3

  • Assigning stored procedure output value to java variable

    I have one stored procedure which is having ref cursor as the output parameter.
    How to assign refcursor value to my java variable?

    cstmt.registerOutParameter(1, OracleTypes.CURSOR);
    cstmt.execute()
    ResultSet rs = (ResultSet)cstmt.getObject(1);
    ==
    Ashok

  • Stored procedure OUTPUT VARCHAR2 value truncated using 12c client on Server 2012

    Questions:
    1) Is there a version of Oracle Client 11g which runs on Server 2012? My 11.2.0.0, when the installer begins, says my Server 2012 (8GB mem, 80 GB drive) does not meet the minimum requirements and I should not install it. This same installer worked on Server 2008.
    2) Have you seen the following behavior from Oracle client 12c? Are there any patches?
    When I was unable to find a version of Oracle 11g client for Windows Server 2012, I downloaded Oracle 12c. We have a few stored procedures, when invoked from a Windows Server 2008 with an 11g client work. However, when running that some code on a Windows Server 2012 machine does not work. I have certain stored procedures with an OUTPUT parameter when executed on 2012 has the values truncated.
    For instance:
    Output parameter is set to return "SUCCESS", but was is received is "SUC"
    Ouput parameter is set to return "AllSet", but it returns "All"
    Output parameter is set to cast a NUMBER to a VARCHAR2 and the value is a 5 digit number, but only the first two digits are returned. Ex: "83976", but only "83" appears.
    The above takes place when run from Server 2012, but works fine from Server 2008 and Win 7.

    Questions:
    1) Is there a version of Oracle Client 11g which runs on Server 2012? My 11.2.0.0, when the installer begins, says my Server 2012 (8GB mem, 80 GB drive) does not meet the minimum requirements and I should not install it. This same installer worked on Server 2008.
    2) Have you seen the following behavior from Oracle client 12c? Are there any patches?
    When I was unable to find a version of Oracle 11g client for Windows Server 2012, I downloaded Oracle 12c. We have a few stored procedures, when invoked from a Windows Server 2008 with an 11g client work. However, when running that some code on a Windows Server 2012 machine does not work. I have certain stored procedures with an OUTPUT parameter when executed on 2012 has the values truncated.
    For instance:
    Output parameter is set to return "SUCCESS", but was is received is "SUC"
    Ouput parameter is set to return "AllSet", but it returns "All"
    Output parameter is set to cast a NUMBER to a VARCHAR2 and the value is a 5 digit number, but only the first two digits are returned. Ex: "83976", but only "83" appears.
    The above takes place when run from Server 2012, but works fine from Server 2008 and Win 7.

  • Stored Procedure Output Issue in Query Template

    Hi,
    We have written a stored procedure which returns 3 outputs which are of type CLOB. Whenever we call the procedure from query template it gives an error Wrong number or type of parameters. It seems that we need to pass some variables which are of type clob to the procedure while calling which we cannot do as per my knowledge in query template.
    Even if we are able to get the output we will not be getting complete output since the out put values are of type CLOB.
    Can you guide me how to achive this
    Thanks,
    Shalaka

    Hi,
    Sometime back i faced the similar problem. But I used oracle pipelined functions to achieve this....
    The basic thing is it will break the chunk into records of length of 4000 chars and it will return in a table. And from other end you can loop and concatenate. Hope this helps....
    create or replace FUNCTION FN_GEN_XML RETURN dashb_xml pipelined IS v_xml CLOB := NULL;
    v_temp VARCHAR2(4000) := NULL;
    v_counter NUMBER := 1;
    BEGIN
      SELECT somefunction(0)
      INTO v_xml
      FROM dual;--v_xml here is clob type. here you might need to call your proc and get it into this variable.
      dbms_output.put_line ('length of v_xml is:' || length(v_xml));
      DBMS_OUTPUT.PUT_LINE('start of this function');
      LOOP
        v_temp := SUBSTR(v_xml,   v_counter,   4000);
        EXIT
      WHEN v_temp IS NULL;
      DBMS_OUTPUT.PUT_LINE(to_char(v_temp));
      pipe ROW(v_temp);
      v_counter := v_counter + 4000;
    END LOOP;
    RETURN;
    END;
    Regards,
    Ravi Kumar

  • Possible to use stored procedure to fill excel template?

    Hi,
    I want to fill a defined named range in an Excel file with a matrix of values from a stored procedure in Oracle. Is this possible?
    Today from our ASP.NET client we ask an oracle database for resultset and then rearrange and work with the resultset and print the final resultset to defined named ranges in an Excel file with the OLEDB provider. We repeatingly execute a SQL statement like "INSERT INTO [DATA_RANGE1] VALUES ('var1','var2','var3');" and for each sql statement a new row is inserted in excel file in the defined named range "DATA_RANGE1". This works fine, but is VERY time consuming!
    It would be nice writing all insert statements in one call to the excel file instead of repeatingly call the excel file.
    If I try to use sql statements separated with ";", like "INSERT INTO [DATA_RANGE1] VALUES ('var1','var2','var3'); INSERT INTO [DATA_RANGE1] VALUES ('var1','var2','var3');" in one query from the ASP.NET client I get System.Data.Oledb.OledbException "Characters found after end of SQL statement".
    Today the connectionstring look like
    _connectionExcel = NewSystem.Data.OleDb.OleDbConnection ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source="+ "'" & strFullPathAndName & "';Extended Properties=Excel 12.0 Macro;")
    for Excel 2010 files and
    _connectionExcel = NewSystem.Data.OleDb.OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ "'" & strFullPathAndName & "';Extended Properties=Excel 8.0 Macro;")
    for Excel 2003 files.
    Is there another method to solve this?
    I asked about this in an Excel forum and they advised me to use a stored procedure, but I am not sure about how to do this, and if it is possible?
    BR, Siri

    >
    Is it possible to provide a very simple example how to implement such a lock?
    >
    Funny you should ask. I wanted to check out Tubby's suggestion also so did a very simple (i.e. non-useable) example.
    -- function to get a handle - this could be in a package - the AUTONOMOUS_TRANSACTION is only needed if you care about the COMMIT that gets done.
    create or replace function get_lock_handle (p_name IN varchar2)
      return VARCHAR2 is
    --PRAGMA AUTONOMOUS_TRANSACTION;
      v_handle VARCHAR2(2000);
    begin
        DBMS_LOCK.ALLOCATE_UNIQUE (P_NAME, v_handle);
        RETURN v_handle;
    end;
    -- actual procedure you want to serialize
    create or replace procedure test_lock is
      v_handle VARCHAR2(2000);
      v_lock_result INTEGER;
       v_i INTEGER;
    begin
      v_handle := get_lock_handle('test_lock'); -- here you could pass the name of the procedure as the name of the lock
      v_lock_result := dbms_lock.request(v_handle, timeout => 2); -- only wait 2 seconds to get the lock
      if (v_lock_result = 0) then
         v_i := 1;
         loop
            if (v_i = 10) then
                 exit;
            end if;
            v_i := v_i + 1;    
        dbms_output.put_line ('procedure is executing'); 
         dbms_lock.sleep(5);
          end loop;
      else
        dbms_output.put_line('procedure is locked');
        return;
        end if;
        v_lock_result := DBMS_LOCK.RELEASE(v_handle);
       EXCEPTION
            WHEN OTHERS THEN
               v_lock_result := DBMS_LOCK.RELEASE(v_handle);
    end;Now call EXEC TEST_LOCK from two different sessions.
    The second session will time out after 2 seconds. Keep running it and once the first session releases the lock the second will execute.
    Thanks for the question - and thanks Tubby for suggesting DBMS_LOCK - I hadn't used it for this purpose before.

  • How to retrieve Stored Procedure Output Parameter?

    Hi,
    I'm using a stored procedure with MS SQL Server. The stored procedure creates the required table entries correctly. After executing the procedure i free the resulting recordset reference and am able to retrieve the return value of the stored procedure. However,
    I am not able to retrieve the output parameters of the procedure. I am connected to the database using the MS OLE DB Provider for SQL Server. I tried using ODBC as well. Didn't work either. I know this issue has been addressed before, did anyone come up with a solution for this problem?
    Thanks in advance,
    Marco

    I can tell you what I do with LabSQL and a single output parameter. After I open the connection to the database, I execute a SQL statement that looks like this:
    declare @resultID int
    execute spInsUUTResult @SerialNumber = '999DEBUGXXX',
    @SequenceName = 'Sequence File2.seq',
    @CategoryID = 2,
    @TypeID = 1,
    @StartDateTime = '10-10-2003 13:42:45',
    @ExecutionTime = 3.5698713,
    @UUTStatus = 'Passed',
    @UserName = 'Dennis Knutson',
    @StationName = 'DENNIS-KNUTSON',
    @UUTResultID = @resultID OUTPUT
    This query result is the output parameter. I first debugged the call to the stored procedure in the SQL Server Query Analyzer and then just copied that straight into my LabVIEW code. You may be using something other than LabSQL but you should have a function t
    hat allows for raw SQL commands.

  • Stored procedure output parameter cast problem - there was a mistake in the

    Hi
    I call to an oracle stored procedure from java and when i get the output parameter i get a classCastException.
    The output parameter is for example of typeA
    typeA is a sql object composed by a parameter of typeB and a parameter of typeC
    typeC is a sql table of typeD objects
    and typeD, typeB are objects composed by numbers, varchar2, date.....
    I know that i have all the java to sql mappings correctly done because when my typeA is an input parameter of a procedure, it works correctly.
    But when i have it as an output parameter i can�t solve the classCastException.
    This is more or less my java code to call to the procedure:
    dbConn=DriverManager.getConnection(dnsName,dnsUser,dnsPwd);
    Map map = dbConn.getTypeMap();          
    map.put("TYPEA", Class.forName("tiposOracle.inv.Inv"));               
    map.put("TYPEB", Class.forName("tiposOracle.inv.Inv_cab"));               
    map.put("TYPED", Class.forName("tiposOracle.inv.Inv_lin"));
    CallableStatement cstmt = dbConn.prepareCall("{call GENERAL.OBTENER_MENSAJE (?,?)}");
    cstmt.setBigDecimal(1, codMensaje);
    cstmt.registerOutParameter(2, OracleTypes.STRUCT, "TYPEA");
    cstmt.execute();
    Inv inv = (Inv)cstmt.getObject(2,map);       ////////Here the exception-----------------------------------------------------------------------------------------------
    The java class Inv represents the sql object typeA as this:
    public Inv_cab cab;
    public ARRAY lins;
    And the classes Inv_cab and Inv_lin typeB and typeD with dates, BigDecimals and String.
    lins is the table of Inv_lin.
    And finally, this is the exception i get:
    java.lang.ClassCastException
    at tiposOracle.inv.Inv.readSQL(Invrpt.java:29)
    at oracle.sql.STRUCT.toClass(STRUCT.java:829)
    at oracle.sql.STRUCT.toJdbc(STRUCT.java:734)
    at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:6094)
    at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:840)
    at principal.PedirDatosMensaje.main(PedirDatosMensaje.java:103)
    Can anyone help me?
    Thanks

    Now i get this exception in cstmt.registerOutParameter(2, OracleTypes.STRUCT);java.sql.SQLException: Conflicto de tipo de par�metro: sqlType=2002
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
         at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterBytes(OracleCallableStatement.java:248)
         at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:402)
         at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:471)
         at principal.PedirDatosMensaje.main(PedirDatosMensaje.java:78)
    Conflicto de tipo de par�metro means: conflict of parameter type

  • Stored procedure output parameter cast problem

    Hi
    I call to an oracle stored procedure from java and when i get the output parameter i get a classCastException.
    The output parameter is for example of typeA
    typeA is a sql object composed by a parameter of typeB and a parameter of typeC
    typeB is a sql table of typeD objects
    and typeD, typeB are objects composed by numbers, varchar2, date.....
    I know that i have all the java to sql mappings correctly done because when my typeA is an input parameter of a procedure, it works correctly.
    But when i have it as an output parameter i can�t solve the classCastException.
    This is more or less my java code to call to the procedure:
    dbConn=DriverManager.getConnection(dnsName,dnsUser,dnsPwd);
    Map map = dbConn.getTypeMap();          
    map.put("TYPEA", Class.forName("tiposOracle.inv.Inv"));               
    map.put("TYPEB", Class.forName("tiposOracle.inv.Inv_cab"));               
    map.put("TYPED", Class.forName("tiposOracle.inv.Inv_lin"));
    CallableStatement cstmt = dbConn.prepareCall("{call GENERAL.OBTENER_MENSAJE (?,?)}");
    cstmt.setBigDecimal(1, codMensaje);
    cstmt.registerOutParameter(2, OracleTypes.STRUCT, "TYPEA");
    cstmt.execute();
    Inv inv = (Inv)cstmt.getObject(2,map);       ////////Here the exception-----------------------------------------------------------------------------------------------
    The java class Inv represents the sql object typeA as this:
    public Inv_cab cab;
    public ARRAY lins;
    And the classes Inv_cab and Inv_lin typeB and typeD with dates, BigDecimals and String.
    lins is the table of Inv_lin.
    And finally, this is the exception i get:
    java.lang.ClassCastException
         at tiposOracle.inv.Inv.readSQL(Invrpt.java:29)
         at oracle.sql.STRUCT.toClass(STRUCT.java:829)
         at oracle.sql.STRUCT.toJdbc(STRUCT.java:734)
         at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:6094)
         at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:840)
         at principal.PedirDatosMensaje.main(PedirDatosMensaje.java:103)
    Can anyone help me?
    Thanks

    Now i get this exception in cstmt.registerOutParameter(2, OracleTypes.STRUCT);java.sql.SQLException: Conflicto de tipo de par�metro: sqlType=2002
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
         at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterBytes(OracleCallableStatement.java:248)
         at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:402)
         at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:471)
         at principal.PedirDatosMensaje.main(PedirDatosMensaje.java:78)
    Conflicto de tipo de par�metro means: conflict of parameter type

  • Design Question::Instantiating Object from Stored Procedure Output

    Hi All,
    I am confused with approaching this design issue. I called a Stored Procedure, and the output from the Stored Procedure is a REF CURSOR. The size of the REF CURSOR can be large.
    My Question is, is it a good idea to pass the values from the REF CURSOR to a class constructor, there by instantiating an object of that type. lets say
    //rset is of type ((OracleCallableStatement)callableStatement).getCursor(5);
    //rset is not ResultType
    while (rset.next()){
    new ClassXYZ(var1, var2, var3);
    /*var1, var2, var3 would be rset.getObject(1),rset.getObject(2),rset.getObject(3)
    Class XYZ does some business logic
    }Other things:
    1) Will the JVM hold up assuming good enough JVM mem size, while creating objects for the range 100 thousands?
    2) I do not know the cursor size. It can change randomly from business perspective. And, it would be in the range of 100 thousands
    I was thinking, If I can "police" the call to the Class XYZ in case of large data. May be I am totally off the best solution. Any light on the best way to approach will be great.
    Anyhow, this would be a standalone java application. Just in case if people are trying to suggest/recommend DAO etc.,
    Thank you,
    VJ

    You can use ConvertTo-Html:
    http://ss64.com/ps/convertto-html.html
    Here's an example:
    http://social.technet.microsoft.com/Forums/scriptcenter/en-US/5cb016d3-e2fb-43e7-9c01-10b6878056e4/formattable-lost-in-email
    Don't retire TechNet! -
    (Don't give up yet - 13,085+ strong and growing)

  • Execute Oracle Stored Procedure from Excel

    Is it possible to execute an Oracle Stored Procedure from Microsoft Excel and return the result of the Oracle Store Procedure into the excel spreadsheet.

    Yes. You can use Oracle Objects for OLE to accomplish this. It comes with Excel examples and an online help file with many more examples.

  • How do I return two values from a stored procedure into an "Execute SQL Task" within SQL Server 2008 R2

    Hi,
    How do I return two values from a
    stored procedure into an "Execute SQL Task" please? Each of these two values need to be populated into an SSIS variable for later processing, e.g. StartDate and EndDate.
    Thinking about stored procedure output parameters for example. Is there anything special I need to bear in mind to ensure that the SSIS variables are populated with the updated stored procedure output parameter values?
    Something like ?
    CREATE PROCEDURE [etl].[ConvertPeriodToStartAndEndDate]
    @intPeriod INT,
    @strPeriod_Length NVARCHAR(1),
    @dtStart NVARCHAR(8) OUTPUT,
    @dtEnd NVARCHAR(8) OUTPUT
    AS
    then within the SSIS component; -
    Kind Regards,
    Kieran. 
    Kieran Patrick Wood http://www.innovativebusinessintelligence.com http://uk.linkedin.com/in/kieranpatrickwood http://kieranwood.wordpress.com/

    Below execute statement should work along the parameter mapping which you have provided. Also try specifying the parameter size property as default.
    Exec [etl].[ConvertPeriodToStartAndEndDate] ?,?,? output, ? output
    Add a script task to check ssis variables values using,
    Msgbox(Dts.Variables("User::strExtractStartDate").Value)
    Do not forget to add the property "readOnlyVariables" as strExtractStartDate variable to check for only one variable.
    Regards, RSingh

  • Calling Stored procedure with Parameters in PowerPivot DataModel

    Hi All,
    I wanted to call a SQL stored procedure from PowerPivot(Excel) on based on changing slicer's value. 
    Currently, we can call stored procedure wihtout any parameter from Data Model tab using 
    Exec stored_proc_name in Table Properties window.
    What if I want to call the same procedure with a parameter whouse value will come by changing slicer's value. I  meant, changing slicer value will act as a parameter to that stored procedure & it should return updated results. 
    Is this possible in PowerPivot?

    Hi Rameshwar,
    According to your description, you call a SQL Server stored procedure in PowerPivot data model, now the problem is that you need to pass a parameter to the stored procedure, right?
    Based on my research, it seems that we cannot achieve this requirement directly in current version of PowerPivot data model. Here is a similar thread for you reference.
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/5350228d-bc62-4a3b-a1a6-e847483e2858/powerpivot-for-excel-2013-call-execute-stored-procedure-with-parameters?forum=sqlkjpowerpivotforexcel
    If you have any concern about this behavior, you can submit a feedback at
    http://connect.microsoft.com/SQLServer/Feedback and hope it is resolved in the next release of service pack or product. Your feedback enables Microsoft to make software and services the best that they can be, Microsoft might consider to add this feature
    in the following release after official confirmation.
    Regards,
    Charlie Liao
    TechNet Community Support

  • Procedure output as Log files

    Hi all,
    Can any one of you can explain me how to generate the stored procedure output as a ".log" file in oracle ??????
    Thanks in advance,
    Vinay A

    It depends on what you mean by stored procedure output, and on what tool you are using.

Maybe you are looking for

  • When I drag a message from trash folder back to inbox it disappears- where is it?

    I see the key command in the Messages menu for moving messages back to inbox, but really, there should just be a "move" button for moving messages from folder to folder.

  • Link from Accounting Doc Number to PO

    Hi, In FBL3n certain doc types PO number is not updating.Using assignmnets i want to update the field for these kind of doc no. My doubt is from FI doc number how can i link it to the PO number. Eg:i have an FI doc number say 51000000 which has two l

  • Once the zprogram developed what the checks we doooo in realtime..

    Hi , Can any one explain me what are  the check we do once we completed the code... explain with tcode...step by step plz...

  • NW65SP5 - SP7 or SP8 do I need to buy a new licence?

    Hi I have NW65 on SP5. I am considering upgrading to either SP7 or SP8. On Novell's SP8 page it says "Evaluating NetWare 6.5 SP8 The software you download includes a full license. You can install NetWare 6.5 SP8 on a virtual machine or on a physical

  • Creating Slideshow

    I would like to place four small photos to loop without effects in a single location on our office webpage.  I thought there would be a simple way to do it in DW but I guess it is better to do it in Flash or a use third party plug-in.  I would like t