RFC call from MSSQL 2000 stored procedure

Hi. I need call SAP RFC transaction from stored procedure of MS SQL Server 2000.
When i'm execute example from T-SQL Help it's work perfect
Examples
A. Use Prog ID
This example creates a SQL-DMO SQLServer object by using its ProgID.
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
IF @hr <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
   SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
    RETURN
END
When i'm execute:
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
EXEC @hr = sp_OACreate 'SAP.Functions',
    @object OUT
IF @hr <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
   SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
    RETURN
END
i'm recieve error:
0x800401F3
ODSOLE Extended Procedure
Wrong string with class name
BUT! This example work perfect via another way: in VBS script, in VBA macros, in Visual FoxPro program.
What wrong in MS SQL ???

Hi Vitaly Ashmarin.
Pls, Did you solve this issue?
Ty

Similar Messages

  • Please Help!!!!! Problem Migrating from sql 2000 stored procedure to PL/SQL

    I have used a tool to convert my sql 2000 stored procedure to Oracle 10g PL/SQL, here is an example
    SQL 2000 Stored Procedure
    CREATE PROCEDURE [GetEmployees]
    AS
    Select * from EMPMST ORDER BY emp_name
    GO
    After Transformation i got 2 files, one was a procedure and other a package
    CREATE OR REPLACE PACKAGE GLOBALPKG
    AS
         TYPE RCT1 IS REF CURSOR;
         TRANCOUNT INTEGER := 0;
         IDENTITY INTEGER;
    END;
    CREATE OR REPLACE PROCEDURE GetEmployees
         RCT1 IN OUT      GLOBALPKG.RCT1
    AS
    BEGIN
         OPEN RCT1 FOR
         SELECT *
         FROM EMPMST
         ORDER BY emp_name;
    END;
    When i execute the procedure GetEmployees i got this error :
    SQL> execute GetEmployees;
    BEGIN GetEmployees; END;
    ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to 'GETEMPLOYEES'
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    Please Help me in debugging this error. Thanks in advance.

    As the poster above mentioned you cannot call "GetEmployees" without a parameter.
    Note that the procedure declaration has the following line
    RCT1 IN OUT GLOBALPKG.RCT1
    This means that whenever you want to call the procedure you must pass it a variable of type GLOBALPKG.RCT1
    However unless this is merely a homework or learning exercise (i.e. you are not porting the code of a production application) i would strongly recommend that you do not attempt to simply convert the code to PL/SQL.
    The reasoning behind this is that Oracle's architecture will be completely different to the source of the original code and if you attempt to simply port the code (especially using an automatic tool) you will almost certainly hit problems.
    For example the SQL Server's 2000 code may (should be) be written based on SQL Server's locking strategy. Oracle's locking strategy is completly different if you try to use the same techniques as you do in SQL Server the performance will suffer.
    Porting a code or a database schema from one platform to another involves a lot of analysis in order to take advantage of the features of the destination platform.
    As I said this may not be important to you depending on why you are attempting a port.
    Good Luck.

  • Can you make an SSL (https) call from a Java Stored Procedure?

    I have loaded a bunch of java classes. Ultimately, one of my routines makes an
    https call to another machine (https://machine:443/foo?xml...). I am receiving
    the following error message:
    SSL implementation not available
    I read
    http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_
    id=NOT&p_id=103051.1
    Which states
    3.17.6 You can not do SSL callouts from within 8i to other CORBA or EJBs. This
    also means that you can not callback with an SSL connection a CORBA object
    running in an 8i client.
    Does this mean that I can't do what I am trying to do from within 8.1.7?
    If there is any way to do this, I would really appreciate the advice. I need
    to call this Java API from a pl/sql routine, and it has to be via SSL. I would
    prefer to load all the Java into the database and avoid an exproc call.

    Anton/Joe,
    Yes, you can do this, but it might not be straightforward based on the version of Oracle you have. I've noticed there's a higher chance of getting this to work with 8.1.7 or higher (otherwise, you may need to load more classes, etc.). Mark Piermarini posted a nice example in a previous thread in this group:
    http://osi.oracle.com/~mbpierma/SSL_Java_DB.html
    Basically, he connected to UPS to get package tracking info.
    Hope this helps,
    -Dan
    http://www.compuware.com/products/devpartner/db/oracle_debug.htm
    Debug PL/SQL and Java in the Oracle Database

  • Calling a URL from a Java Stored Procedure

    Hi,
    I'm trying to call a URL from a Java Stored Procedure in Oracle 8.1.7(Windows 2000). The ultimate goal is to call this stored procedure from a database trigger. The status of the object remains invalid in the database even after compilation and publishing without any errors. The code follows. Any suggestions/alternatives to accomplish this would be appreciated.
    Java Stored Procedure:
    CREATE OR REPLACE JAVA SOURCE NAMED "UPDATEATTR" AS
    import java.net.*;
    import java.util.*;
    import java.io.*;
    public class UpdateAttr {
    public static String testmain() {
    ObjectInputStream is;
    URL url;
    String uri =
    "http://www.yahoo.com";
    try {
    //calling the URL
    url = new URL(uri);
    URLConnection yahooConnection = yahoo.openConnection();
    } catch (Exception e) {
         e.printStackTrace(System.err);
    return "TEST_SUCCESSFUL";
    Code to Publish it:
    CREATE OR REPLACE FUNCTION setNewAttributes return VARCHAR2
    AS LANGUAGE JAVA NAME
    'UpdateAttr.testmain() return String';
    Thanks in advance.
    Ris

    Small mistake in the previous post. The object still has a status of "INVALID" though. The Java stored procedure should actually read:
    Java Stored Procedure:
    CREATE OR REPLACE JAVA SOURCE NAMED "UPDATEATTR" AS
    import java.net.*;
    import java.util.*;
    import java.io.*;
    public class UpdateAttr {
    public static String testmain() {
    ObjectInputStream is;
    URL url;
    String uri =
    "http://www.yahoo.com";
    try {
    //calling the URL
    URL yahoo = new URL(uri);
    URLConnection yahooConnection = yahoo.openConnection();
    } catch (Exception e) {
    e.printStackTrace(System.err);
    return "TEST_SUCCESSFUL";
    Code to Publish it:
    CREATE OR REPLACE FUNCTION setNewAttributes return
    VARCHAR2
    AS LANGUAGE JAVA NAME
    'UpdateAttr.testmain() return String';
    /

  • How to call PL-SQL script/stored procedure from Java?

    Assume I want to call a PL-SQL stored procedure from external Java program.
    How can I do this?
    Is there a simple "Hello world" example for this?
    Peter

    This forum is for Oracle only not for java
    Ug

  • How to call PL-SQL script/stored procedure from BPEL?

    Assume I want to call a PL-SQL stored procedure from BPEL.
    How can I do this?
    Is there a simple "Hello world" example for this?
    Peter

    The database adapter supports calling stored procedures. There is an example called "File2StoredProcedure" that you can use as a reference to get started.

  • Problem while calling webservice from a plsql stored procedure

    Hi everybody,
    I need to call a webservice from a plsql stored procedure.
    I was following documentation published in the otn at the following link.
    "http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html"
    I am encountering the following error on my sql prompt-
    SQL> exec dbms_output.put_line(time_service.get_local_time('94065'));
    BEGIN dbms_output.put_line(time_service.get_local_time('94065')); END;
    ERROR at line 1:
    ORA-29273: HTTP request failed
    ORA-06512: at "SYS.UTL_HTTP", line 1022
    ORA-12545: Connect failed because target host or object does not exist
    ORA-06512: at "APPS.DEMO_SOAP", line 65
    ORA-06512: at "APPS.TIME_SERVICE", line 13
    ORA-06512: at line 1
    Has anybody worked on the same example. Please direct me.
    Thanks & Regards
    Kiran Kumar

    Kiran, were you able to solve this?
    I am facing the same error.
    Oracle Server is Unix and webservice is .NET.
    I am able to connect to Java web service.

  • How to call a sql server stored procedure from oracle

    Hi all,
    Please anybody tell me how to call a sql server stored procedure from oracle.
    I've made an hsodbc connection and i can do insert, update, fetch data in sql server from oracle. But calling SP gives error. when I tried an SP at oracle that has line like
    "dbo"."CreateReceipt"@hsa
    where CreateReceipt is the SP of sql server and hsa is the DSN, it gives the error that "dbo"."CreateReceipt" should be declared.
    my database version is 10g
    Please help me how can i call it... I need to pass some parameters too to the SP
    thanking you

    hi,
    thank you for the response.
    when i call the sp using DBMS_HS_PASSTHROUGH, without parameters it works successfully, but with parameters it gives the following error
    ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
    [Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver]Invalid parameter number[Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index (SQL State: S1093; SQL Code: 0)
    my code is,
    declare
    c INTEGER;
    nr INTEGER;
    begin
    c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@hsa;
    DBMS_HS_PASSTHROUGH.PARSE@hsa(c, 'Create_Receipt(?,?)');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@hsa(c,1,'abc');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@hsa(c,2,'xyz');
    nr:=DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@hsa(c);
    DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@hsa(c);
    end;
    Create_Receipt is the sp which requires two parameters.
    please give me a solution
    thanking you
    sreejith

  • Calling a servlet from a Java Stored Procedure

    Hey,
    I'm trying to call a servlet from a Java Stored Procedure and I get an error.
    When I try to call the JSP-class from a main-method, everything works perfectly.
    Java Stored Procedure:
    public static void callServlet() {
    try {
    String servletURL = "http://127.0.0.1:7001/servletname";
    URL url = new URL(servletURL);
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestProperty("Pragma", "no-cache");
    conn.connect();
    ObjectInputStream ois = new ObjectInputStream(conn.getInputStream());
    Integer client = (Integer)ois.readObject();
    ois.close();
    System.out.println(client);
    conn.disconnect();
    } catch (Exception e) {
    e.printStackTrace();
    Servlet:
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    Integer id = new Integer(10);
    OutputStream os = response.getOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(os);
    oos.writeObject(id);
    oos.flush();
    oos.close();
    response.setStatus(0);
    Grant:
    call dbms_java.grant_permission( 'JAVA_USER', 'SYS:java.net.SocketPermission','localhost', 'resolve');
    call dbms_java.grant_permission( 'JAVA_USER','SYS:java.net.SocketPermission', '127.0.0.1:7001', 'connect,resolve');
    Package:
    CREATE OR REPLACE PACKAGE pck_jsp AS
    PROCEDURE callServlet();
    END pck_jsp;
    CREATE OR REPLACE PACKAGE BODY pck_jsp AS
    PROCEDURE callServlet()
    AS LANGUAGE JAVA
    NAME 'JSP.callServlet()';
    END pck_jsp;
    Architecture:
    AS: BEA WebLogic 8.1.2
    DB: Oracle 9i DB 2.0.4
    Exception:
    java.io.StreamCorruptedException: InputStream does not contain a serialized object
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java)
    The Servlet and the class work together perfectly, only when I make the call from
    within the database things go wrong.
    Can anybody help me.
    Thank in advance,
    Bart Laeremans
    ... Desperately seeking knowledge ...

    Look at HttpCallout.java in the following code sample
    http://www.oracle.com/technology/sample_code/tech/java/jsp/samples/jwcache/Readme.html
    Kuassi

  • HELP!!! Problem of Calling external Web Service from a Java Stored Procedur

    1.I read the topic on http://www.oracle.com/technology/sample_code/tech/java/jsp/samples/wsclient/Readme.html about Calling external Web Service from a Java Stored Procedur.
    2.After I import .jar to Oracle what is required by the topic,som error occued.
    Like: ORA-29521: javax/activation/ActivationDataFlavor class not found,
    ORA-29545: badly formed class.
    3.These is not enough .jar required on the topic? What can I do for ORA-29545: badly formed class?
    Thany you!

    Try this
    Re: HELP! Loading Java Classes into Oracle ERROR

  • Calling JPA from a Java Stored Procedure

    Is it possible to call JPA from a java stored procedure? If so, does anyone have example? How do you setup the persistence.xml?
    How does the peformance compare with straight JDBC in a java stored procedure?
    Thanks for any help!
    Johnny

    Hi Johnny:
    Basically you can run any JDK 1.5 framework inside your Oracle 11g JVM, I have experience integrating Lucene IR library as a new [Domain Index for Oracle 11g/10g|http://docs.google.com/View?id=ddgw7sjp_54fgj9kg] .
    I am not familiar with JPA internals but my advice is howto handle the connection inside the OJVM and the configuration files.
    Some time ago I took a look to SpringFramework integration and I found that writing a new ApplicationContext class which handles the loading of beans.xml from XMLDB repository instead a file should be enough to work.
    Another important point is the life cycle of the [Oracle internal JVM|http://download.oracle.com/docs/cd/E11882_01/java.112/e10588/chtwo.htm#BABHGJFI]. Unlike an standard JVM the OJVM is created once you first connect from the middle tier at OCI level and remains in execution during the connection pool existence.
    I mean, if you connect using a JDBC pool the JVM will remains running across multiple soft open/close connections of your middle tier application. This is good because you can read your persistence.xml file using a Singleton class and this expensive operation will be re-used by multiple open/close operation done from the middle tier.
    I suggest you do a simple Proof of Concept with a Hello World application and check if it works.
    Remember that any security issues will be notified to the .trc files, security issues are related to the strong security layer configured by default inside the OJVM, for example you can not read any files from the OS file system without an specific grant, you need another grant to access to the class loader and so on, but you can simply grant this specific needs to a database role and then grant this role to the user which connect to the OJVM.
    Another important point is related to the [End-of-Call Optimization|http://download.oracle.com/docs/cd/E11882_01/java.112/e10588/chtwo.htm#BABIFAAI] this can be useful if you want to perform some clean up in your Singleton class at the level of per-statement execution.
    Best regards, Marcelo

  • Call a UNIX shell script from an oracle stored procedure

    We need to call a UNIX shell script from an oracle stored procedure
    i.e. the control should come back to the procedure once the script completes. Can any body help to achieve this ?

    There are various ways in achieving this.
    For Example, you can call a PRO*C-Library residing on the database server.
    This requires a PL/SQL library to be generated and some changes to the Listener configuration.
    It is also possible to implement a java procedure on the database being invoked by a PL/SQL wrapper class.
    In this way (and if used right) there is also granularity regarding the filestructure permissions given and it may be called during a Forms or other PL/SQL session.
    The article below explains a more generic approach how to invoke shell commands from within an Oracle Instance.
    Be careful with this, because it really works ;)
    Refer to :
    http://www.oracle-base.com/articles/8i/ShellCommandsFromPLSQL.php
    Message was edited by:
    user434854

  • Moving a system from MSSQL 2000 to MSSQL 2000 IA64

    Hi
    We have a R/3 Enterprise 47x110 system running on MSSQL 2000/windows 32 bit. We want to change our hardware to 64 bit. According to platform availability matrix, we have to use mssql 2000 ia64/win2003 ia64 with this release. We want to know which procedure has to be used for moving a system from mssql 2000 32 bit to mssql 2000 ia64?

    Hello
    Migrating an SAP system from Windows SQL IA32 to Windows SQL IA64 is a fairly simple procedure.
    I have performed this migration myself several times.
    You need to ensure that your source system (IA32) has the required support pack levels for SQL 2005
    I recommend you review 905634, 151603 and 683447.
    I would strongly recommend that you move directly to SQL 2005 rather than SQL 2000.  SQL 2005 is fully supported and offers a lot of performance and administration features (such as snapshots).
    SQL Data files are compatible between SQL platforms. By this I mean if you do an sp_detach on an SQL IA32 system you can sp_attach them to an SQL IA64 system without any special action.  The files are also compatible between SQL versions, you can detach from SQL 2000 and attach to SQL 2005.  This is described in section III of 799058.
    In your case I would:
    1.  Make sure you support packs are up to date on source system
    2.  Make sure you are using the correct collation 600027
    3.  Install 4.7 on your IA64 host from the install CDs
    4.  Update your IA64 system kernel to the correct level
    5.  Detach the "empty" DB from the IA64 host
    6.  Shutdown your IA32 system, stop SQL, start SQL and then stop SQL
    7.  Copy the datafiles and log files to the IA64 system
    8.  Attach them to your IA64 SQL 2005 system
    9.  Run the SQL Tools utility
    10. Start up your 4.7 instance
    11. Check SM21, ST04, SICK and DB02
    12. Reschedule your backups and DBCC
    This procedure should work and should be quite simple to implement.  You can leave you IA32 system untouched, so if you experience any problems you have a fall back position (ie. just restart your IA32 system - nothing has changed on you IA32 system or its database).
    I recommend you obtain the official SAP SQL 2005 CD, it includes SP1 and has a useful script call SQL4SAP.VBS that sets a lot of options for you automatically.
    Check 879941 - you may need to adjust the torn page setting and auto_update_statistics_async settings or you will get red alerts in your CCMS tree.
    For other people out there who use Java systems (EP, XI etc) you <b>will almost certainly</b> have to update your JDBC drivers. See note 639702. 
    Hope this helps, let me know if you have any questions.
    Goodluck
    Message was edited by: Sam Badan

  • Using XI - RFC table and an Oracle stored procedure that returns a cursor.

    I need to create an interface using XI between an RFC table and an Oracle stored procedure that returns a cursor.  We are on oarcle 9.2 and  SP12.
    My stored procedure looks something like this:
    CREATE OR REPLACE
    PROCEDURE testproc_xi2 (p_recordset1 OUT SYS_REFCURSOR,
                                             in_quoteid IN varchar2 )
    AS
    BEGIN
      OPEN p_recordset1 FOR
       SELECT  q.quote_id,
                     q.modified_by,
                     q.quote_status,
                     q.total_cost
                FROM quote q
               WHERE q.quote_id = in_quoteid
                 AND q.total_cost > 0 ; 
    END testproc_xi2 ;
    My RFC has table and  one import parameter .
    I wanted to know how to create the data type for the ref cursor? and also for the table type in the RFC?
    CAN XI handle multi rows coming from a Stored procedure? Are there any other alternative methods if this is not supported?Any pointers to this would be helpful.
    I have called a Oracle SP from an RFC before, but that interface had one input parameter going to the stored procedure from the RFC and about 6 o/p parameters coming from the Stored procedure. This works fine.
    Thanks for the help.
    Mala

    Mala,
    i dont think there is anything called an rfc table...RFC stands for remote function call. That in essence would imply you need a rfc to jdbc connection.
    yes XI can handle multiple rows cooming from the the stored procedure if you have them mapped appropriately.
    Now as to how to create the data type within xi , you need to know what fields are going to be returned and whether they are nested and then just create them as you would for an xml
    for ex
    <Details>
      <FirstName>
    <LastName>
    </Details>
    that in xi would be smthing like
    Details  type of data occurence
    FirstName type of data occurence
    LastName type of data occurence.
    Hope that helps.
    If it does dont forget the points..:-)

  • Creating a table/view or temporary table from within a stored procedure

    Hi Gurus,
    Can someone tell me if it is possible to create a table (or view) from within a stored procedure.
    PROBLEM:
    In fact I need to create a report at back end (without using oracle developer forms or reports). This report requires creating several tables to hold temporary report data. If I create a sql*plus script for this, i works fine, because it can run DDL and other sql or pl/sql statements sequencialy. But this sql*plus script cannot be called from application. So, application needs an stored procedure to do this task and then application call that procedure. But within stored procedure, i am unable to create table (or run any ddl statement). Can somebody help me in this?
    Thanks in Advance.

    Denis,
    The problem with Nicholas' suggestion isrelated to the fact that now you have two components
    (a table and a stored procedure)
    I don't see any problem to have "two
    components" here. After all, what about all others
    tabes ? This is only one more, but I don't understand
    why want manage less objects, that implies more code,
    more maintenance, and more difficulties to debug.
    Needless to say about performance...
    Nicolas.The same reasons apply if you were forced to declare all PL/SQL variables publicly (outside the stored proc.) rather than privately (from inside the stored proc). Naming conflicts for one. If the name that you want to use for the GTT already exists, you need to find a new name. With the SQL Server type local/private declarations, you wouldn't have that problem.
    I can see how performance would be the same or better using GTTs. If the number of records involved is low, this is likely negligable.

Maybe you are looking for

  • CF Builder 2 license is not working for the upgrade to CF Builder 3.  Suggestions?

    I purchased CF Builder 2 during a promotion a few years ago, and CF Builder 3 does not recognize that license number when trying to upgrade.  any ideas?

  • Accessing Discoverer Viewer on a PDA

    Hi, Could anyone tellme if it would be possible to access discoverer viewer on a PDA running windows mobile 2003? We have a Portal running the discoverer portlets and when I click "Analyze" link the discoverer viewer errors with a java null pointer.

  • What is a website that can assist with getting student loans under control?

    I've seen in previous post people refer others to a website that will assist you in getting your loans under control. I have multiple loans with different loan companies and I want to speak with someone to guide me through getting on the right track?

  • HT4864 syncing computers on different OS

    I have a Mac tower running lion and macbook pro running snow leopard, and i phone, ipad and ipod.  i have been syncing all of my idevices on my macbook running leopard.  it always asks me if i want to back up to icloud, and i say yes, but when i go t

  • Error code 0xd0001000

    New imac won't load University 365 office for mac. Keep getting error code above, any ideas on how to sort this out, have spent hours with microsft technical staff.