Mssql storedprocedure and jdbc

Hello Java Gurus,
I am having a hard time to make a simple call to a sql stored procedure and make use of its returned value. what am i doing wrong in my code below.
float balance = -1;
Connection cnn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch(Exception e) {
System.err.println(e.getMessage());
cnn = DriverManager.getConnection("jdbc:odbc:DemoApp;uid=sa;pw=password");
cstmt = cnn.prepareCall("{call proc_Purchase(?,?,?)}");
cstmt.setDouble(1,.03);
cstmt.setInt(2, 508);
cstmt.setString(3, "Wal-Mart");
cstmt.executeUpdate();
rs = cstmt.getResultSet();
balance = rs.getFloat(1);
System.err.println("Remaining balance is: " + balance);
cstmt.close();
cnn.close();
catch (SQLException e) {
System.err.println("Error occured " + e.getMessage());
System.err.println("more info.. " );
e.printStackTrace();
cnn.close();
I get a "No row count was produced" error.
my sp is working just fine, i have pasted it below.., the table is updated just fine with the java app however i cannot get the returned balance from the stored procedure.
ALTER PROCEDURE [DBO].[proc_Purchase]
(@Amount float, @ID int, @Description varchar(50))
AS
--set nocount on
--check if limit has not reached, if so return -1
if ((select sum(Amount) from tblTransaction where [ID] = @ID) + @Amount) >
(select Limit from tblUserData where [ID] = @ID)
     select -1 as AvailBalance
--update transaction and return available balance.
else
begin
     insert into tblTransaction ([ID],[Description],Amount)
     Values (@ID,@Description,@Amount)
     select(select Limit from tblUserData where [ID] = @ID) -
     (select sum(Amount) from tblTransaction where [ID] = @ID)as AvailBalance
end
Thank you!!

Does the stored procedure have an output variable?
CREATE PROCEDURE myProcedure
@myvalue1 int,
@myvalue2 int,
@myvalue3 int,
@myoutput float output
Then use CallableStatement.registerOutParameter to register the 4th value.
String myCall = "{ call myProcedure(?,?,?,?)}";
cstmt = conn.prepareCall(rxExchange);
cstmt.registerOutParameter(4,Types.FLOAT);
Then to execute and get the value:
cstmt.setInt(1,45);
cstmt.setInt(2,23);
cstmt.setInt(3,982);
cstmt.execute();
Float myFloat = cstmt.getFloat(4);

Similar Messages

  • Help on RFC to JDBC and JDBC to RFC

    Help on RFC to JDBC and JDBC to RFC
    Hi Gurus
    I have the scenario where an RFC will be triggered in SAP , to write to a DB2 database and insert new records in a table
    and vice versa the JDBC has to read som data from a table based on a primary key, mark them as read for not be read next time and send the data to an RFC where a table in SAP will be updated.
    I have never worked with JDBC before , pls advice.
    is there any new issue to consider in PI 7.0 regarding JDBC
    Thanks.

    The requirement looks standard,
    SEARCH IN SDN FOR JDBC scenarios,you will find many docs for sender as well as Receiver.
    >
    > is there any new issue to consider in PI 7.0 regarding JDBC
    >
    no issue with PI7.0.
    Regards,
    Raj

  • Creating a service ; What needs to be added to tnsnames.ora and JDBC url?

    DB version: 11.2.0.2
    OS platform : Solaris 10
    We have a 2 node RAC.
    DB name   = mbsprd
    Instance1  = mbsprd1
    Instance2  = mbsprd2I want Instance 1 (mbsprd1) to be used for our OLTP application and Instance 2 (mbsprd2) to be used for another application of DSS nature.
    Based on the syntax
    srvctl add service -d <dbname> -s <ServiceName> -r <Preferred Instance> -a <Available Instance>I am going to create 2 services
    -- Creating a service called OLTP
    srvctl add service -d mbsprd -s OLTP  -r mbsprd1 -a mbsprd2-- Creating a service called DSS
    srvctl add service -d mbsprd -s DSS  -r mbsprd2 -a mbsprd1-- Starting the services
    srvctl start service -d mbsprd -s OLTP
    srvctl start service -d mbsprd -s DSSI guess the above steps are enough to configure a service at the server side.
    I would like to know what needs to be done at the client side.
    Currently the tnsnames.ora file and JDBC url used by our clients are shown below. What needs to be added to tnsnames.ora file and jdbc URL to start using services configured above?
    -- SCAN based TNS entry
    mbsprd =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (COMMUNITY = tcp.world)
            (PROTOCOL = TCP)(Host = p148149-scan.tpam.net) (Port = 36964))
        (CONNECT_DATA =
          (SERVER       = DEDICATED)
          (SERVICE_NAME = mbsprd)
          (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))
    -- TNS entry based on local listener
    -- Instance 1
    mbsprd1 =
    (DESCRIPTION =
       (ADDRESS_LIST =
       (ADDRESS =(PROTOCOL = TCP)(HOST = hsolarp148-vip)(PORT = 36973))
       (CONNECT_DATA =
             (SERVICE_NAME = mbsprd)
             (INSTANCE_NAME = mbsprd1)
    -- Instance 2
    -- TNS entry based on local listener
    mbsprd2 =
    (DESCRIPTION =
       (ADDRESS_LIST =
       (ADDRESS =(PROTOCOL = TCP)(HOST = hsolarp149-vip)(PORT = 36973))
       (CONNECT_DATA =
             (SERVICE_NAME = mbsprd)
             (INSTANCE_NAME = mbsprd2)
    )JDBC entry for RAC
    jdbc:oracle:thin:@p148149-scan.tpam.net:36964:mbsprd -- Alternative version used by some clients because the above had 'some issues'
    jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=p148149-scan.tpam.net) (PORT=36964))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=mbsprd)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 10))))

    OLTP =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = p148149-scan.tpam.net)(PORT = your_port_number))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = OLTP)
    DSS =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = p148149-scan.tpam.net)(PORT = your_port_number))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = DSS)
      )JDBC entry for RAC
    jdbc:oracle:thin:@p148149-scan.tpam.net:36964:service_name
    jdbc:oracle:thin:@new_tns_entry_description(if you would like to connect the database with particular service)
    try this and let us know any issues,

  • IDoc to JDBC  and JDBC to IDoc Scenario

    Dear All,
    I am working on IDoc to JDBC and JDBC to IDoc Scenario.
    I have to send Idoc from SAP to Non SAP system(.NET application) i almost configured in XI but still i don't know when my INTEGRATION will INVOKE how my data will proceed from IDOC to Oracle database(Through JDBC) and in case of revese how and when Data flow will start.
    Does anyone have completed STEP by STEP scenario document for this?
    How my Idoc will sent to XI?
    How XI will pick up data from IDoc?
    How XI will Convert data to JDBC and UPDATE in Oracle Database?
    And i reverse case(JDBC to IDoc) when my INTEGRATION will INVOKE?
    Where and When i can watch my process and data?
    How can i test the whole integration?
    I AM GETTING ERROR WHILE TESTING CONFIGURATION IN Integration Directory "Error while refreshing the XI runtime cache" and when i check this in SXI_CACHE  it gives me error
    "Unable to refresh cache "NO_BUSINESS_SYSTEM"
    "Error during last refresh to cache"LCR_GET_OWN_BUSINESS_SYSTEM - NO_BUSINESS_SYSTEM"
    Please solve all the above problems i will reward u points
    thanks,
    RP

    Hi,
    While we working on IDOC to JDBC interface..
    We have to deploy JDBC Drivers?
    Go through this links,
    /people/varadharajan.krishnasamy/blog/2007/02/27/configuring-jdbc-connector-service-to-perform-database-lookups
    http://searchsap.techtarget.com/tip/0,289483,sid21_gci1246926,00.html
    To install JDBC driver follow the how to guide.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-how-to-guides/how%20to%20install%20and%20configure%20external%20drivers%20for%20jdbc%20and%20jms%20adapters.pdf
    Configuration of JDBC Adapter for SQL Server
    JDBC Driver = com.microsoft.jdbc.sqlserver.SQLServerDriver
    Connection = jdbc:microsoft:sqlserver://hostname:<port>;DatabaseName=<DBName>
    UserID and Password.
    If the connection is not working find the correct port number.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/40b92770-db81-2a10-8e91-f747188d8033
    JDBC- X I -  R/3 Scenario
    /people/bhavesh.kantilal/blog/2006/07/03/jdbc-receiver-adapter--synchronous-select-150-step-by-step
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
    Please check the driver path as mentioned below.
    JDBC Driver : sun.jdbc.odbc.JdbcOdbcDriver
    Connection:jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=//location of DB table.mdb;
    No JDBC driver required.
    Receiver JDBC scenario MS access - /people/sameer.shadab/blog/2005/10/24/connecting-to-ms-access-using-receiver-jdbc-adapter-without-dsn
    follow this thread
    Re: Problem when connecting to MS Access through JDBC Adapter.
    SAP Note 850116 has details
    /people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
    Configuring the Sender JDBC Adapter
    http://help.sap.com/saphelp_nw04/helpdata/en/1d/756b3c0d592c7fe10000000a11405a/content.htm
    Configuring the Receiver JDBC Adapter
    http://help.sap.com/saphelp_nw2004s/helpdata/en/b0/676b3c255b1475e10000000a114084/content.htm
    Idoc Reveiver adapter..
    http://help.sap.com/saphelp_erp2004/helpdata/en/b9/c5b13bbeb0cb37e10000000a11402f/content.htm
    Thanks,
    Satya Kumar
    /people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
    Edited by: SATYA KUMAR AKKARABOYANA on May 8, 2008 5:51 PM

  • How to avoid hardcoding in RFC Lookup and JDBC Lookup during transport...

    Hi All,
      We have RFC and JDBC Lookups in some of our scenarios(JDBC to RFC synch)....Now problem is during transport of design objects, we have to change the business system and channel name manually in UDF in target environment....as it wont change although we define the target group in SLD.....we want to avoid this hardcoding.....one idea is we can use a business service inspite of business system and assign the comm channel to it.....this business service will be generic for all environment(dev,qua and prod)...and hence we dnt hav to hardcode....pls let me knw how to achieve or its possible or not....
    waiting for ur inputs....
    Regds,
    Pinangshuk.

    Hi,
    For RFC lookup you might be doing hardcoding for Business system and RFC channel name.
    Options are
    1) Create value mapping for Business system. So you can maintain it in Directory part.
    2) Keep the RFC channel name same for all system (Development, Quality, Production)
        The details of channel can be changed in the Directory part of the respective system

  • Any difference in the dbms and jdbc drivers btw oracle 8i lite and 9i lite

    Is there any significant difference between oracle 8i lite and oracle 9i lite in terms of database and jdbc drivers?
    If not, it may be better off using oracle8i.

    According to Oracle , 9i lite is more powerful than 8i Lite.
    one thing, 8i Lite is not certified for windows 2000.
    jothi

  • Problem between SOAP Sender and JDBC Receiver

    Hi,
    I have a asynchronous scenary between SOAP Sender and JDBC Receiver.
    The idea is sending an ID for updating one register.
    Table structure is:
    TABLE AS_PERSONA
        (P_RUT                         VARCHAR2(10) NOT NULL,
        P_NOMBRE                       VARCHAR2(50),
        P_APELLIDO                     VARCHAR2(50))
    The ID is the P_RUT field.
    The structure of message that I send by SOAP, is the following:
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <SOAP-ENV:Body>
              <m:MT_CONS_SOAP xmlns:m="urn:prueba:voliva">
                   <CONSULTA>
                        <P_RUT>15445</P_RUT>
                   </CONSULTA>
              </m:MT_CONS_SOAP>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    The JDBC receiver structure is:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_CONS_PERSONA xmlns:ns0="urn:prueba:voliva">
         <Statement>
              <AS_PERSONA action="UPDATE">
                   <table>AS_PERSONA</table>
                   <access>
                        <P_NOMBRE>DELETE_BY_XI</P_NOMBRE>
                        <P_APELLIDO>DELETE_BY_XI</P_APELLIDO>
                   </access>
                   <key>
                        <P_RUT>15445</P_RUT>
                   </key>
              </AS_PERSONA>
         </Statement>
    </ns0:MT_CONS_PERSONA>
    When I do a call to SOAP by XMLspy, it returns a message without data, that means succesfull reply.
    I see message monitor and see the succesfull flag. But in the database it doesn't update the register.
    This scenario was proved using the File Sender and same JDBC Receiver, then result was succesfull.
    I proved SOAP Sender with a File Receiver, storing information from SOAP sender in an archive, and works well.
    Then I imagine that exist some problem between SOAP and JDBC. what could be happening ?
    Thanks.

    Hi,
    Looks like the problem is with the JDBC receiver...try updating the value in the table by using a File-JDBC scenario..does it work..check the adapter monitor in RWB..
    Regards,
    Sushumna

  • Need information about Mail  and JDBC Adapter

    Hi Guys,
    I am just started learning XI. Can any you provide any document how to use Mail and JDBC adapters in step-by-step way.
    Thanks & Regards
    Surendra M

    hi,
    Check these links
    Mail Adapter
    http://help.sap.com/saphelp_nw70/helpdata/en/ad/bf93409c663228e10000000a1550b0/frameset.htm
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9e6c7911-0d01-0010-1aa3-8e1bb1551f05
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6d967fbc-0a01-0010-4fb4-91c6d38c5816
    JDBC Adapter
    http://help.sap.com/saphelp_nw70/helpdata/en/22/b4d13b633f7748b4d34f3191529946/frameset.htm
    Receiving Mail attachments using additional files of file adapter
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1685 [original link is broken] [original link is broken] [original link is broken]
    FILE to JDBC Adapter using SAP XI 3.0
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
    Tips and Tutorial for Sender JDBC Adapter
    /people/yining.mao/blog/2006/09/13/tips-and-tutorial-for-sender-jdbc-adapter
    Sachin
    Message was edited by:

  • File to Idoc and Jdbc

    Hi Guys,
                 Can I implement a scenario wherein the data is sent to Idoc and JDBC parallelly without using BPM?
    Regards,
    Ashish

    Ashish,
    ><i>If i add multiple recievers in receiver determination step without any condition, then how do i add multiple interface determinations in the area below?</i>
    Once you add multiple Receivers and save the same, the Receivers will be available in the Window Below and you would need to create an Interface Determination for each of these Receivers.
    As you do not have any condition, no need to add conditions.
    ><i>created seperate Receiver determinations</i>
    You would need only ONE RECEIVER DETERMINATION and this receiver determination would in turn have multiple Interface Determinations.
    Like mentioned, add multiple receivers save the Receiver Determination and in the window below, you will nopw be able to add an Interface determination for each of the receiver.
    Regards,
    Bhavesh

  • JMS and JDBC Adapter in PI7.1

    Hi All,
    Kindly tell me about the blogs for JMS and JDBC adapter.
    Please tell me about the Message Types in JMS adapter.
    Thanks in advance.

    Hi Shwetambari,
    Thanks for the reply.
    We need to mention the Adapter Modules while configuring the communiucation channels in JMS
    e.g. Adapter/ConvertJMSMessageToBinary,Adapter/ConvertBinaryToXMBMessage etc.
    So please tell me whether we need to write the cide for the same in JAVA or it is already there ?If it is there then whre can we get it?Do we need to decompile the archeve ?If so, then how to do it?
    Can you give me the Adaqpter Modules for which the code is already there?
    The JMS adapter (Java Message Service) enables you to connect messaging systems to the Integration Engine or the PCK.
    What are the different types of Messaging Systems?Or what is meant by the Messaging System in JMS?
    What are the different types of Messages used?
    Thanks in advance.
    Edited by: Shweta Kullkarni on Sep 4, 2009 5:22 AM

  • How to upload an html file using jsp and jdbc

    Hi,
    im trying to upload an html page using JSP and jdbc. but of no success.
    my aim is to keep some important html pages in the database.the file size can vary.the file has to be selected from a local machine (through the browser) and uploaded to a remote machine(where the databse resides).
    any help/sample code or pointer to any helpful link is appreciated.
    thanks in advance
    javajar2003

    When uploading a file, I use a byte array as a temporary buffer..
    So, you should then be able to store the byte array in the
    database as binary data.
    example>
    //Temporary Buffer To Store File
    byte[] tmpbuffer = new byte[860];
    //Some Code To Upload File...
    //File Should Now Be In Byte Array
    //Get DB Connection and execute Prepared Statement
    Connection con=//GET DB CONNECTION;
    String sql=insert into TABLE(page) values(?);
    PreparedStatement ps=con.prepareStatement(sql);
    ps.setBytes(1,tempbuffer);
    ps.executeUpdate();
    //Close PS and Free DB Connection
    ..... and this method looks like you dont even have
    to store the file in a byte array, you can just give
    it the input stream.
    ps.setBinaryStream(int, inputStream, int);
    You may have to make several attempts at this. I have
    uploaded a file and temporarily stored it in a byte array,
    but have never from there stored it in the DB as binary
    data.. but this looks like it'll work.
    Good Luck!

  • TableView - support for datasource (on-demand loading and JDBC)

    Hi,
    I'm new to JavaFX and I was wondering if anybody knows any good practices for TableView with large datasets. Any API extension that supports datasources for on-demand loading and JDBC. Or any good tutorial, example or ideas. I was looking at DataFX but I don't see any datasource for JDBC in the javadocs even when it's mention their website.
    Thanks in advance, any help or ideas are appreciated.

    Hello,
    here is some pseudocode for your requirement.
    max pagesize is 100 per query request
    i=0
    While(!Lastpage)
    request.startrownum=i;
    response=LeadQuery(request);
    Lastpage=response.lastpage;
    i+=100
    }

  • Can i use create function for MSSql scalar and table valude function.

    Hi,
    1) Can i use create function for MSSql scalar and table valued function?
    2) How many type of user defined function are there in oracle 11g express?
    3) And can i reture any "type" form user defined function?
    yourse sincerely

    944768 wrote:
    Q1)That means even if i return predefined types like integer, varchar2 then also PGA is used ?The data type does not determine where the variable is stored. A string (called a varchar2 in Oracle) can be stored in stack space, heap space, on disk, in a memory mapped file, in a shared memory, in an atom table, etc.
    It is the who and what is defining and using that string, that determines where and how it is stored.
    The Oracle sever supports 2 languages in PL/SQL. The PL (Programming Logic) language is a procedural/declarative language. It is NOT SQL. SQL is integrated with it. The PL/SQL engine uses private process memory (PGA). So PL/SQL variables exist in the PGA (but there are exceptions such as LOBs).
    Q2) So please suggest me solution in oracle.Sounds to me you are looking at how to implement a T-SQL style function as an Oracle function, and once implemented, do joins on the function.
    Do not use PL/SQL in SQL in place of a SQL select. It is not T-SQL.
    One cannot use PL/SQL to create functions along the style of T-SQL, where the function executes a SQL using some conditional logic, and then return as if the function was a native SQL select.
    T-SQL is an extension to the SQL language - making it a hybrid and very impure language implementation. PL is based on ADA - part of the Pascal family of languages. The E-SQL (embedded SQL) approach used in languages like C/C++, Cobol and Ada, has been transparently done in PL/SQL. You can write and mix PL code and variables with SQL code. And the PL/SQL engine figures out how to make the call from the PL/SQL engine to the SQL engine.
    But PL/SQL is not "part" of the SQL language and does not "extend" the SQL language in a T-SQL fashion.
    So you need to check your SQL-Server preconcepts in at the door, as they are not only irrelevant in Oracle, they are WRONG in Oracle.
    The correct way in Oracle, in a nutshell - Use the SQL language to do data processing. Use PL/SQL to manage conditional process flow and the handling of errors.

  • JSF and JDBC

    Hi, I am new to JSF, can anybody direct me to a good tutorial on JSF and JDBC (Oracle)?
    Thanks

    Try
    http://java.sun.com/developer/onlineTraining/index.html
    From here you will find links for JDBC (via Distributed computing) & the Web Services Tutorial (JSF is included)
    If you specifically want Oracle then you can sign up to OTN - try
    http://www.oracle.com/technologies/

  • Sqlj and jdbc for linux

    Hi All,
    I am currently set up the (tomcat) jsp engine on top of apache web server.
    And now i would like to install both sqlj and a jdbc driver such
    that I can query our oracle database. In all of the options for downloads
    there is a windoze option and a solaris option. Do I have to wait for specific
    "linux" version to get them to work. Or is the solaris option alright
    for linux ??
    slightly confused,
    Chris

    Unfortunately, this description is still rather unspecific.
    It sounds, as if there might be an issue with the way database connections are established for the SQLJ and JDBC parts of your program. Could you provide more information on that, specifically on how you obtain JDBC connections and SQLJ connection contexts.

Maybe you are looking for

  • Data is not Base64 encoded - error when starting Weblogic connecting to IS

    I get the following error trying to connect to Identity Server from weblogic 7.0 via the weblogic java policy agent from Sun: java.lang.ExceptionInInitializerError: java.lang.RuntimeException: Data is not Base64 encoded. I have set the encode cookie

  • Closing chained I/O streams

    When chaining high-level I/O streams with low-level streams, without creating a reference to latter, are they getting closed automatically? Let me clarify the situation. That is a sample code from a book: FileInputStream fis = new FileInputStream("fi

  • Siebel Upgrade 7.8 to 8.1 - Merge Repository step error.

    We are upgrading Siebel 7.8.2.14 to 8.1 and I get these errors at step "Repository Merge": !!ERROR::The same values for 'Column Name' already exist. If you would like to enter a new record, please ensure that the field values are unique.(SBL-DAT-0038

  • Exposing OIM APIs as webservice

    Hi, I wanted to know if i can expose OIM APIs as webservice? As per my reqmnt, i need to implement forgot password and change password functionality for OIM users from a portal application. So wanted to know if I can use OIM APIs say getChallengeValu

  • Firefox loads but then fails to respond. Well this is embarrassing is displayed

    The following message is displayed but the program is unresponsive. Firefox is having trouble recovering your windows and tabs. This is usually caused by a recently opened web page. You can try Removing one or more tabs that you think may be causing