Calling Postgres function over DB link?

Hi,
I have established a link to Postgres DB (over ODBC Gateway), I am able to select data from Postgres tables (SQL Developer :) )- I would like to call a Postgres function- I have tried combinations with RETNUM@PGDB() [where retnum() is my function in Postgres, and PGDB is a working link]- but I'am unable to communicate with it- could you give me a hint, how to do it?
Regards
Bart Dabr

Hi Bart,
The DG4ODBC does not support calling remote stored procedures so this will never work. Because it is a 'generic' gateway designed to be used with many different data sources it does not have this functionality as the non-Oracle databases may not have stored procedures.
This is mentioned in the documentation -
Oracle® Database Gateway for ODBC User’s Guide 11g Release 2 (11.2)
Page 2-2 -
Known Restrictions
If you encounter incompatibility problems not listed in this section or in "Known
Problems" on page 2-3, contact Oracle Support Services. The following section
describes the known restrictions:
Does not support stored procedures
It also applies to the earlier 11.1 DG4ODBC and also 10.2 HSODBC.
Regards,
Mike

Similar Messages

  • PDA: Calling library functions - seems to link the stubbed .cpp file instead of the DLL

    I'm having trouble developing a Lab View PDA module that calls a DLL built using Visual C++. The DLL functions correctly when called in a non-PDA VI. My issues seem to be with porting to the PDA.
    My configuration:
    - Lab View 8.5 with the PDA 8.5 module
    - Visual Studio 8.0 with the Windows Mobile 6.0 SDK
    - ASUS 626 PDA with an Intel PXA70 procesor running Windows Mobile 6 Classic
    Following the PPCBatt example code provided with the PDA module, I have:
    - used extern "C" to prevent name mangling
    - placed the DLL built with the Windows Mobile SDK in the \Windows directory on the PDA
    - created a stub Win32 DLL and lib
    - created a stubbed cpp file whose functions only return zero
    - included the stubbed cpp and lib files in the build spec / source files / additional files
    - placed Call Library Function nodes on my PDA VI, selected the function names, set the parameter types
    - built and deployed the executable, both with and without debug
    When I set the library path property of the Call Library Node, the functions appeared in the function name pulldown, but the parameters did not populate. I had to manually add them and set their types. The help page says they would autopopulate when the function was selected.
    I've debugged the VI, and the Library Function Call nodes are being called. It seems the build is linking the code from the stub C file provided in the additional files portion of the source files property page, instead of adding hooks to call the DLL on the PDA. As a test, I changed an output parameter in one of the functions in the stubbed cpp file - the changed value showed in the front panel indicator.
    What am I doing wrong?
    Dan

    Hi Dan,
    I'm not sure if I understood you problem fully. When calling external code with LabVIEW PDA, the DLL acts as a stub DLL with the correct function prototypes for the C code that you want to call. Here's a Knowledge Base article that might help explain about calling External Code in LabVIEW PDA.
    Regards,
    Stanley Hu
    National Instruments
    Applications Engineering
    http://www.ni.com/support

  • Ora-600 using table function over db link

    Hi,
    I have a table function n my target schema (OWB 9.2.0.4 on Oracle 9.2.0.5) with the following signature:
    function uii_get_exchange_data_tf(
    p_input_values in sys_refcursor
    ) return uii_exchange_table_t pipelined
    When I try to use this with a remote table over a db link, e.g.:
    =============
    select * from table(uii_get_exchange_data_tf(cursor (select sub_zone || '/' || exch_grp_cd exchange_id,
    exch_name exchange_name FROM cds_exchange_test@uiid1@uiidraconn order by exchange_id)))
    ==============
    I get this:
    ================
    ORA-00600: internal error code, arguments: [kokbnp2], [942], [], [], [], [], [],
    ORA-06512: at "UII_ODS_OWNER_DEV.UII_GET_EXCHANGE_DATA_TF", line 21
    =================
    However, if I create a local view with the same remote select like this:
    ===================
    CREATE OR REPLACE FORCE VIEW UII_CDS_EXCHANGE_RV
    AS SELECT sub_zone || '/' || exch_grp_cd exchange_id,
    exch_name exchange_name
    FROM cds_css_exch_detail@uiid1@uiidraconn;
    ====================
    Then everything works fine.
    Can someone help ? I'm sure I'm dooing something silly, since so many people seem to be using table functions from OWB just fine; but I can't figure out what :-(
    Thanks in advance.
    Regards,
    Biswa.

    Hello,
    Is this query works fine without creating mview
    SELECT COL1,COL2, CASE when COL3 = Y then (select X from MASTER2@DBLINK) FROM MASTER1@DBLINK.
    try something like this
    SELECT col1, col2, CASE
                          WHEN col3 = y
                          THEN
                             (SELECT x
                              FROM master2@dblink)
                       END
                          my
    FROM master1@dblinkregards

  • ORA-7445 when trying to call a function over JDBC

    Hi,
    We are trying to call a PL/SQL stored function which is in a package. When we call the procedure with SQLPlus or something different, it works fine, no error occurs. But when we try to call it over jdbc, we gat the following error plus an ORA-07445 error in the alert log. (running 8.1.7.4.0 on SunOS 5.8)
    UDBAdapter.UDBAdapter : 2003 Feb 04 09:04:05:662 DEBUG Alert : Connection--Connection recovered--NO_ALERT--1044342009152
    UDBAdapter.UDBAdapter : 2003 Feb 04 09:04:05:662 DEBUG Operation : Customer Update
    UDBAdapter.UDBAdapter : 2003 Feb 04 09:04:05:682 DEBUG Unique Id : 1123839
    UDBAdapter.UDBAdapter : 2003 Feb 04 09:04:09:998 ERROR Exception MessageNo more data to read from socket
    UDBAdapter.UDBAdapter : 2003 Feb 04 09:04:09:998 ERROR Exception Code17410
    UDBAdapter.UDBAdapter : 2003 Feb 04 09:04:09:998 ERRORjava.sql.SQLException: No more data to read from socket
    The alert log error is as follows :
    ORA-07445: exception encountered: core dump [kolcpcpy()+168] [SIGBUS] [Invalid
    address alignment] [2147484761] [] []
    Any help would be appreciated. Best regards.
    Ogun

    Hi Ogun,
    The "oerr" utility for your error code gives the following output:
    07445, 00000, "exception encountered: core dump [%s] [%s] [%s] [%s] [%s] [%s]"
    // *Cause: An OS exception occurred which should result in the creation of a
    // core file. This is an internal error.
    // *Action: Contact your customer support representative.
    Excuse the silly, obvious questions, but
    * have you examined the core dump?
    * have you contacted your customer support representative?
    * have you searched the "MetaLink" web site?
    http://metalink.oracle.com
    If you care to post the part of your java code that is causing the problem -- I may be able to help you.
    Good Luck,
    Avi.

  • SQL report region source to call a pl/sql function using DB link

    Hi - I have a pl/sql function fn_dbtype(id NUMBER) defined in database X. The pl/sql function executes couple DML statements and returns a string (a SELECT query). I am able to call this function using SQL Plus (Connected to Database X) as below and it works fine:
    declare
    vSQL VARCHAR2(100);
    begin
    vSQL := fn_dbtype(1);
    end;
    The DML operations completed fine and vSQL contains the "Select" query now.
    In APEX:
    I am trying to create a SQL report in APEX using SQL query(PL/SQL function returning a sql statement) option. I am trying to figure out what to put in the region source so that the output of the "Select" query is displayed in the report.
    Moreover APEX is hosted in a different database instance. So I would need to call this pl/sql function using a DB Link.
    Please let me know what I need to put in the region source to execute the pl/sql function which returns the "Select" query thereby displaying the query output in the report. Thanks.
    Edited by: user709584 on Mar 19, 2009 2:32 PM
    Edited by: user709584 on Mar 19, 2009 2:34 PM

    try something like this:
    return fn_dbtype(1)@dblink;

  • Link that calls DB function in report

    I have a standard report. I would like to add 2 links to the end of each row with the action by the user.
    For example:
    Order No Name Action
    123 John Doe Approve | Decline
    456 Jane Dow Approve | Decline
    Where Approve and Decline are links that call DB functions.
    How do I begin?
    TIA
    Scott

    Hi Scott,
    You can try this
    Create an application level item F101_ID
    Create 2 appication level processes to call you're stored procedures / functions.
    One for Accept and one Decline. F101_ID would probably be the PK of the record you are dealing with or
    in the example below "column_name_1"
    If you want to use a icon
    select .....
    '<img src="#WORKSPACE_IMAGES#accept.ico" width="30" height="30" alt="Accept"'
    || 'onclick="javascript:accept(this,'||column_name_1||','||column_name_2||');">',
    '<img src="#WORKSPACE_IMAGES#decline.ico" width="30" height="30" alt="Accept"'
    || 'onclick="javascript:decline(this,'||column_name_1||','||column_name_2||');">'
    from table_name
    if you want to use a URL then use this
    select ....
    'a href="javascript:accept(this,'||column_name_1||','||column_name_2||');">Accept',
    'a href="javascript:decline(this,'||column_name_1||','||column_name_2||');">Decline'
    from table_name
    On your page definition under HTML header add the following javascript
    <script language="JavaScript" type="text/javascript">
    function accept(pThis,pSelect,formItem1){
    alert("Accepted.");
    var l_Return = null;
    var url;
    var l_Select = html_GetElement(pSelect);
    var get = new htmldb_Get(null,$x('pFlowId').value,
    'APPLICATION_PROCESS=ACCEPT',0);
    get.add('F101_ID',pSelect);
    gReturn = get.get('XML');
    url = 'f?p=&APP_ID.:108:&APP_SESSION.::::P108_ID:' + formItem1;
    w = window.location(url);
    return false;
    </script>
    <script language="JavaScript" type="text/javascript">
    function decline(pThis,pSelect,formItem1){
    alert("Declined.");
    var l_Return = null;
    var url;
    var l_Select = html_GetElement(pSelect);
    var get = new htmldb_Get(null,$x('pFlowId').value,
    'APPLICATION_PROCESS=DECLINE',0);
    get.add('F101_ID',pSelect);
    gReturn = get.get('XML');
    url = 'f?p=&APP_ID.:108:&APP_SESSION.::::P108_ID:' + formItem1;
    w = window.location(url);
    return false;
    </script>
    Hope this helps
    Connor
    Edited by: user4505115 on 2010/05/03 1:40 PM
    Edited by: user4505115 on 2010/05/03 1:41 PM

  • Call Javascript function to pass a id  from APEX report column link

    Hi,
    Can anyone help me, in a report column link i'm calling a function to pass an id and i want to onclick change a icon on that column based on the value on the column status of this table.
    Is this possible?

    Hi Ron,
    I am doing exaclty what you have suggested me but no luck. I started changing the DEMO_CUSTOMERS application to my requirements.The report is working fine and on the report I have created a page attribute to the Hyper linked column and linked that to the page 2 and assign that attribute with #JOBNUM#.
    I am able to pass that value on to form when I click on the JOBNUM. But the problem is I am not able to pass that value into the SQL query so that my query pulls 20+ columns on to the Form ( which is second page ).
    Small clarification... On the form region it is said FORM NAME and type is HTML is that is the way the APEX was designed or does it need to say region type as FORM.
    Thanks for your help in advance.
    Cheers,
    Krishna.

  • How to call a servlets specific function from a link?

    hi all ! Im trying to call a function callled A from a link in my JSP. Im not using any buttons. How do I make this work?
    Thanks in advance.

    Hi,
    A solution to call A might include a custom JSP element. Inside the code for the
    element, you can get a reference to whatever object that "does an A", and make a call on the respective method/function/behavior. You need to extend the standard tag handler classes.
    Good luck!

  • Calling functions over client server connection

    i am currently sending an object between client and server that contains getters that have string variables that are evaluated by a large if statement in the reciever. i was wondering if it is possible to do this a simpler way rather than having a large if statement for all fo the possibilities that are contained in the object.getAction.
    ie:
    client sends object to server where getAction() = count
    server receives object and evaluates the getAction() in a large if statement like so
    if object.getAction()=="hi"
    hi();
    else if object.getAction()=="hello"
    that();
    else if object.getAction()=="count"
    count();
    else if object.getAction()=="multiply"
    multiply();
    is there a simpler and quicker way to do this? i have thought of ways that would just allow a direct calling of a function on the server or client side but i don't see how it would be possible.
    something like this...
    String function = object.getAction()
    function(); -- where function is the string variable it receives from getAtion();
    I know it is not possible to call a function from a variable, but that was my idea. any input or ideas wold be helpful.

    If your server has an array of predefined Runnable objects and the return value of the getAction() method is an int, then
    new Thread(rarray[object.getAction()]).start();In Java, only closure-like object is Runnable.

  • Calling a function from another class - help!

    I realize that this is probably a basic thing for people who have been working with JavaFX for a while, but it is eluding me, and I have been working on it for over a week.
    I need to call a function that is in another class.  Here's the deal.  In EntryDisplayController.java, there are 2 possible passwords that can be accepted - one will give full access to the car, the second will limit functions on the car.  So when a password is entered and verified as to which one it is, I need to call a function in MainDisplayController.java to set a variable that will let the system know which password is being used - full or restricted.
    So in MainDisplayController.java I have this snippet to see
    public class MainDisplayController implements Initializable, ControlledScreen {
        ScreensController myController;
        public static char restrict;
         * Initializes the controller class.
        @Override
        public void initialize(URL url, ResourceBundle rb) {
            // TODO
        public void setRestriction(){
            restrict = 0;
            restrictLabel.setText("RESTRICTED");
        public void clearRestriction(){
            restrict = 1;
            restrictLabel.setText("");
    And in EntryScreenDisplay.java I have this snippet:
    public class EntryDisplayController implements Initializable, ControlledScreen {
         @FXML
        private Label passwordLabel ;
        static String password = new String();
        static String pwd = new String("");
         ScreensController myController;
         private MainDisplayController controller2;
         * Initializes the controller class.
        @Override
        public void initialize(URL url, ResourceBundle rb) {
            setPW(pwd);    // TODO
         @FXML
        private void goToMainDisplay(ActionEvent event){
            if(password.equals ("123456")){
              controller2.clearRestriction();
               myController.setScreen(ScreensFramework.MainDisplayID);
               pwd = "";
               password = "";
               setPW(pwd);
            else if(password.equals ("123457")){
               controller2.setRestriction();
                myController.setScreen(ScreensFramework.MainDisplayID);
               pwd = "";
               password = "";
               setPW(pwd);
            else{
                password = "";
                pwd = "";
                setPW(pwd);
    When I enter the restricted (or full) password, I get a long list of errors, ending with
    Caused by: java.lang.NullPointerException
      at velocesdisplay.EntryDisplayController.goToMainDisplay(EntryDisplayController.java:60)
    Line 60 is where "controller2.setRestriction(); is.
    As always, thanks for any help.
    Kind regards,
    David

    You never set the controller2 variable to anything, which is why you get a null pointer exception when you try to reference it.
    public static variables (and even singletons) are rarely a good idea as they introduce global state (sometimes they can be, but usually not).
    If a static recorder like this can only have a binary value, use a boolean, if it can have multiple values, use an enum.
    Some of the data sharing solutions in dependency injection - Passing Parameters JavaFX FXML - Stack Overflow might be more appropriate.
    I also created a small framework for roll based solutions in JavaFX which perhaps might be useful:
    http://stackoverflow.com/questions/19666982/is-there-a-way-to-implement-a-property-like-rendered-on-javafx
    https://gist.github.com/jewelsea/7229260
    It was just something I hacked together, so it's not a fully polished solution and you probably don't need something quite so complex.
    What you need is a model class shared between the components of your application.  Dependency injection frameworks such as afterburner.fx can help achieve this in a fairly simple to use way.
    If you don't want to go with a dependency injection framework, then you could use either a static singleton model class for your settings or pass the model class using the mechanism in defined in the passing parameters link I provided.  For a model class example, see the ClickCounter class from this example.   That example doesn't use FXML, but to put it together with the passing parameters solution, for your restriction model, you would have something like the following:
       private class Restricted {
         private final ReadOnlyBooleanWrapper restricted;
         public Restricted(boolen isRestricted) {
           restricted = new ReadOnlyBooleanWrapper(isRestricted);  
         public boolean isRestricted() {
           return restricted.get();
         public ReadOnlyBooleanProperty restrictedProperty() {
           return restricted.getReadOnlyProperty();
    Then in your EntryDisplayController you have:
    @FXML
    public void goToMainDisplay(ActionEvent event) {
         // determine the restriction model as per your original code...
         RestictionModel restrictionModel = new RestrictionModel(<appropriate value>);
      FXMLLoader loader = new FXMLLoader(
      getClass().getResource(
       "mainDisplay.fxml"
      Stage stage = new Stage(StageStyle.DECORATED);
      stage.setScene(
       new Scene(
         (Pane) loader.load()
      MainDisplayController controller =
        loader.<MainDisplayController>getController();
      controller.initRestrictionModel(restrictionModel);
      stage.show();
    class MainDisplayController() {
      @FXML private RestrictionModel restrictionModel;
      @FXML private RestrictLabel restrictLabel;
      public void initialize() {}
      // naming convention (if the restriction model should only be set once per controller, call the method init, otherwise call it set).
      public void initRestrictionModel(RestrictionModel restrictionModel) {
        this.restrictionModel = restrictionModel;
         // take some action based on the new restriction model, for example
        restrictLabel.textProperty.bind(
          restrictionModel.restrictedProperty().asString()
    If you have a centralized controller for your navigation and instantiation of your FXML (like in this small FXML navigation framework), then you can handle the setting of restrictions on new screens centrally within the framework at the point where it loads up FXML or navigates to a screen (it seems like you might already have something like this with your ScreensController class).
    If you do this kind of stuff a lot, then you would probably benefit from a move to a framework like afterburner.  If it is just a few times within your application, then perhaps something like the above outline will give you enough guidance to implement a custom solution.

  • Call Center Functions

    I am in the process of determining if VOIP is more accessible and flexible compared to an existing, traditional PBX system. I cannot find whether VOIP provides the call center functions like a PBX system (i.e. call duration reports, number & times for an extension report, etc.) Also, I did not find any information in regards to calling pools, fall overs on extensions, etc. and if that is handled at the extension (phone) or in the call switching module. Any help or direction to more specific details would be appreciated.

    The call center funtionallity is an addition to the IP PBX (CallManager is Cisco's IP PBX), and requires another application layer in your environmnet.
    Cisco has 2 contact center applications, IPCC Express (up to 300 agents) and IPCC Enterprise for enterprise level customers, from architetural perspective these are completely different products, and off course prise is different.
    Take a look a tht following linke for more information:
    http://www.cisco.com/univercd/cc/td/doc/product/icm/index.htm
    Most legacy PBX features are available on CallManager, you'll need to be more specific on "calling pools, fall overs on extensions".
    take a look at CallManager documentation for more details:
    http://www.cisco.com/univercd/cc/td/doc/product/voice/c_callmg/5_0/sys_ad/5_0_4/index.htm
    HTH,
    Chris

  • Call Library Function Node: library not found or failed to load

    Hello,
    I had a VI that could not find some of the dll functions it needed.  It works on one machine and not on another.  So foolishly I copied the dll in question from the working machine and pasted it over the one on the non-working machine. 
    Now all my math functions are broken on the machine I copied the dll too.  The error is "Call Library Function Node: library not found or failed to load"
    And if I try to relink in the VI I get "Error loading C:\National Instruments\LabVIEW 8.2\resource\lvanlys.dll" A dynamic link library (DLL) initialization routine failed."
    I tried a repair labview and that did not help.
    I tried uninstall and reinstall labview and that did not help!
    Please help me fix this!
    Version 8.2
    dll: C:\National Instruments\LabVIEW 8.2\resource\lvanlys.dll
    Jim

    What library did you first copy?
    Also lvanlys.dll depends on the Intel Math Kernel Library that gets installed in a different location "C:\Program Files\National Instruments\Shared\MKL".
    This Intel Math Kernel Library again depends on the Visual C runtime libraries. Most likely you replaced one of those runtime libraries somehow and now the Math Kernel Library (MKL) fails to initialize which causes thelvanlys.dll to fail its load.
    Without a good view on your system and what other NI software you have installed it is very hard to recommend a good way of proceeding. There are various versions of the MKL used by various versions of NI products and just deleting the entire MKL folder might get you into trouble with other NI tools.
    Deinstalling everything from NI, deleting the entire National Instruments folder and then reinstalling what you need would be the most safe proceeding.
    And next time don't just copy some Visual C runtime libraries between machines. Their dependencies are complicated at the least and simply not graspable by us mere mortals. Use the according C runtime installer for the version you need as that installer will take care of installing the right versions of C runtime components and registering everything proberly so you do not usually run into problems with other applications using different versions of the C runtime.
    Message Edited by rolfk on 03-01-2010 10:26 AM
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Execute procedure over db link

    I am trying to execute a stored procedure over database link and I get the following error
    DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER@DBCS(
    ERROR at line 12:
    ORA-06550: line 12, column 2:
    PLS-00306: wrong number or types of arguments in call to 'SET_UPDATE_CONFLICT_HA
    NDLER'
    ORA-06550: line 12, column 2:
    PL/SQL: Statement ignored
    However when I execute the same peice of code by logging on to the server the code executes successfully. "DBCS" is the database link name.
    CODE which I am executing over DB LINK
    DECLARE
    COL_NAME DBMS_UTILITY.NAME_ARRAY;
    CURSOR C1 IS
    SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER='SCOTT' AND TABLE_NAME='DEPT';
    BEGIN
    OPEN C1;
    FETCH C1 BULK COLLECT INTO COL_NAME;
    CLOSE c1;
    DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER@DBCS(
    OBJECT_NAME => 'SCOTT.DEPT',
    METHOD_NAME => 'OVERWRITE',
    RESOLUTION_COLUMN => COL_NAME(1),
    COLUMN_LIST => COL_NAME);
    END;
    CODE without DB LINK (executed this on db where db link is pointing too.
    DECLARE
    COL_NAME DBMS_UTILITY.NAME_ARRAY;
    CURSOR C1 IS
    SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER='SCOTT' AND TABLE_NAME='DEPT';
    BEGIN
    OPEN C1;
    FETCH C1 BULK COLLECT INTO COL_NAME;
    CLOSE c1;
    DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER(
    OBJECT_NAME => 'SCOTT.DEPT',
    METHOD_NAME => 'OVERWRITE',
    RESOLUTION_COLUMN => COL_NAME(1),
    COLUMN_LIST => COL_NAME);
    END;
    Please guide.

    orausern wrote:
    Hi,
    We are on Oracle 11.2.0.2 on Solaris 10. I have two databases on this version of Oracle. From one db I have execute a stored procedure via db link to another database. The store procedure has dynamic sqls (execute immediate) and it uses commit statement as part of the code. Is it alllowed to execute this procedure over db link? I am not aware on the implications on stored proc execution over db link and will be thankful for help.
    Thanks,if no error is thrown, why are you looking for problems where none exist?

  • Interactive report performance problem over database link - Oracle Gateway

    Hello all;
    This is regarding a thread Interactive report performance problem over database link that was posted by Samo.
    The issue that I am facing is when I use Oracle function like (apex_item.check_box) the query slow down by 45 seconds.
    query like this: (due to sensitivity issue, I can not disclose real table name)
    SELECT apex_item.checkbox(1,b.col3)
    , a.col1
    , a.col2
    FROM table_one a
    , table_two b
    WHERE a.col3 = 12345
    AND a.col4 = 100
    AND b.col5 = a.col5
    table_one and table_two are remote tables (non-oracle) which are connected using Oracle Gateway.
    Now if I run above queries without apex_item.checkbox function the query return or response is less than a second but if I have apex_item.checkbox then the query run more than 30 seconds. I have resolved the issues by creating a collection but it’s not a good practice.
    I would like to get ideas from people how to resolve or speed-up the query?
    Any idea how to use sub-factoring for the above scenario? Or others method (creating view or materialized view are not an option).
    Thank you.
    Shaun S.

    Hi Shaun
    Okay, I have a million questions (could you tell me if both tables are from the same remote source, it looks like they're possibly not?), but let's just try some things first.
    By now you should understand the idea of what I termed 'sub-factoring' in a previous post. This is to do with using the WITH blah AS (SELECT... syntax. Now in most circumstances this 'materialises' the results of the inner select statement. This means that we 'get' the results then do something with them afterwards. It's a handy trick when dealing with remote sites as sometimes you want the remote database to do the work. The reason that I ask you to use the MATERIALIZE hint for testing is just to force this, in 99.99% of cases this can be removed later. Using the WITH statement is also handled differently to inline view like SELECT * FROM (SELECT... but the same result can be mimicked with a NO_MERGE hint.
    Looking at your case I would be interested to see what the explain plan and results would be for something like the following two statements (sorry - you're going have to check them, it's late!)
    WITH a AS
    (SELECT /*+ MATERIALIZE */ *
    FROM table_one),
    b AS
    (SELECT /*+ MATERIALIZE */ *
    FROM table_two),
    sourceqry AS
    (SELECT  b.col3 x
           , a.col1 y
           , a.col2 z
    FROM table_one a
        , table_two b
    WHERE a.col3 = 12345
    AND   a.col4 = 100
    AND   b.col5 = a.col5)
    SELECT apex_item.checkbox(1,x), y , z
    FROM sourceqry
    WITH a AS
    (SELECT /*+ MATERIALIZE */ *
    FROM table_one),
    b AS
    (SELECT /*+ MATERIALIZE */ *
    FROM table_two)
    SELECT  apex_item.checkbox(1,x), y , z
    FROM table_one a
        , table_two b
    WHERE a.col3 = 12345
    AND   a.col4 = 100
    AND   b.col5 = a.col5If the remote tables are at the same site, then you should have the same results. If they aren't you should get the same results but different to the original query.
    We aren't being told the real cardinality of the inners select here so the explain plan is distorted (this is normal for queries on remote and especially non-oracle sites). This hinders tuning normally but I don't think this is your problem at all. How many distinct values do you normally get of the column aliased 'x' and how many rows are normally returned in total? Also how are you testing response times, in APEX, SQL Developer, Toad SQLplus etc?
    Sorry for all the questions but it helps to answer the question, if I can.
    Cheers
    Ben
    http://www.munkyben.wordpress.com
    Don't forget to mark replies helpful or correct ;)

  • Program making a RFC call to Function Module not working in background

    Hi All,
    I have an ABAP Program which is used to do a reconciliation check between the R/3 and BI system for Invoice Data. Please find below the details of the program flow:
    1.     Program counts the number of records in the DSO table and aggregates the Net_Value based on the date range (passed as parameters)
    2.     Program calls a Function Module (RFC Call) which counts the number of records in the R/3 table and aggregates the Net_Value for the same date range
    3.     Function Module Passes back the count values and aggregated Net_Value to the program
    4.     Program compares the count and aggregated Net_Value from EDWH and MSP systems and sends an email mentioning whether the counts match or not
    However we are facing an issue.
    Whenever, we execute the program in dialog mode, it works fine and fetches results within 5-6 minutes. However if we schedule the program to run in background (parameters through a variant), it gives no results even after running for over 3-4 hours. We tried figuring it out yesterday but could not come to any conclusion. Since there is a RFC call being to the function module, we were wondering if we need to specify some other parameter as well.
    Thanks & Regards
    Dharmendra

    RFC Call is a procedure for executing remote enables function modules. It is done via the 'Remote Enabled' radio button on the function module's attribute screen.

Maybe you are looking for