Iterative execution of "parametric" interfaces

Hi. Please tell me how I can realize package with iterative execution of interfaces which have some parameter for filter (which is used in them). I mean I'd like to create an package with a structure like:
1: enter parameters (i.e. DATE1 and DATE2)
2: execute interface (using DATE1)
3: check: if DATE1 = DATE2 then goto 4;
else DATE1 = DATE1 + increment; goto 2;
4: continue...

Thanks for reply.
Yes, that's I searched. Can you tell me one more thing:
In this circle I need to assign a new value each time. The variable (#NPMS.P_HOUR) type is numeric. And I want to assign the following value:
#NPMS.P_HOUR - 1 (means #NPMS.P_HOUR = #NPMS.P_HOUR - 1). I know I can use increment '-1'. But can I use "assing"?
Also I'm interested how to realize this if I have a variable with date type and want to iterate my circle like:
#NPMS.P_DATE = #NPMS.P_DATE - "1 day" (i.e.: 28.08.2008 - 1 (day) = 27.08.2008)
Of cours it's possible with using additional variables and procedure but is it possible using just one "instance" of variable in package for setting initial value, one more for checking for continuation of circle, and one more for calculating (setting) next iterative value
Shorter, is it possible to use expression in the package variable using 'assign'?
Is it possible to use "if then else" or "case when" expression there? (without using evaluating)
Edited by: Vovanenok on 05.12.2008 4:42

Similar Messages

  • Execution of Inbound Interfaces in EOIO for separate messages

    Hello XI Experts
    We have a proxy to jdbc scenario. The rquirement is like we have to delete all the data from the oracle table, insert the data records into the table,and call a stored procedure from xi which will be done sequentially. We will be sending the message in chunks of 10,000 records from the source i.e from the proxy i.e there will be different messages with unique messageids creted , directed to the receiver. we have thought of the following design  to execute the messages in EOIO.There will be 3 inbound interfaces DeleteDataMsg,InsertDataMsg(0 to n), CallStoredProcMsg and three different mapings corresponding to the inbound interfaces with different condition rules.There will be always one outbound interface which will be triggered from proxy .
    Is our design correct to implement the requirement?
    Thanks & Regards
    Sabyasachi

    Hi all.
    After taking some hints from this thread, we have found out that the problem lied some where in the installation part of PI.
    We've set up a basic script, local and not remote, and still the system would not execute that command.
    The RWB logs showed successful processing but the Application Server logs were full of errors and stack traces regarding the execution of any command. A support note was raised with SAP support in order to trace these errors.
    I'm therefore closing this question as the original question is not related with remote scripting.
    Thanks all for your help.
    Best regards,
    Romeu

  • For loop 1 iteration execution time

    Hi,
    what is the time taken of for loop 1 iteration without code inside.How to calculate this Execution time.

    Ravindranath.K wrote:
    Hi,
    what is the time taken of for loop 1 iteration without code inside.How to calculate this Execution time.
    No code in the FOR loop?  It will not use any time because the compiler will optimize it out.
    Why do you even need to know?
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Getting Error in Execution of Interface in ODI

    Requirement: To transfer data from Oracle to SQL server.
    LKM Used : LKM SQL to SQL
    Getting Below Error In Executing the Interface.
    ODI-1226: Step --------INTERFACE NAME------ fails after 1 attempt
    (s).ODI-1240 :Flow --Interface Name--- fails while performing load operation.
    CODE for Interface where execution failed:
    Source Code :

    I am also getting the following error at the create work table at time of execution of the interface.
    -3551 : 37000 : java.sql.SQLException: [Microsoft][ODBC Excel Driver] Syntax error in CREATE TABLE statement.
    java.sql.SQLException: [Microsoft][ODBC Excel Driver] Syntax error in CREATE TABLE statement.
         at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
         at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
         at sun.jdbc.odbc.JdbcOdbc.SQLPrepare(Unknown Source)
         at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(Unknown Source)
         at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(Unknown Source)
         at com.sunopsis.sql.SnpsQuery.a(SnpsQuery.java)
         at com.sunopsis.sql.SnpsQuery.a(SnpsQuery.java)
         at com.sunopsis.sql.SnpsQuery.updateExecStatement(SnpsQuery.java)
         at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execStdOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlC.treatTaskTrt(SnpSessTaskSqlC.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    Thankx in advance
    Nick

  • Parallel execution of interfaces

    Hi. In the ODI package I can locate my interfaces and join each two of them by two lines: 'ok' (succesful) and 'ko' (unsuccesful). So I get a sequential execution of these interfaces. How I can make ODI to execute them in parallel way?

    To do that, create a scenario from each of the interfaces (right-mouse button on the interface, generate scenario) and drag the scenario on to the package rather than the interface. This will give you an execute scenario tool, which you should set to execute Asynchronously. execute each of the interfaces, and then use an OdiWaitForChildSession tool to wait for the complketion of the child sessions. If only some of the tasks you execute asynchronously are on the critical path, you can use keywords when you start the executions, and in the wait tool. For those which are on the critical path, give a keyword CP. In the wait tool, wait with the keyword CP.

  • User interface threads

    Ok let's say you're writing a user interface and nothing involves
    special-resources like a daqcard so there's no constraints on using things
    at once. These are some kind of stupid questions and ideas but I'm really
    not sure how to write a quality app with user interface at the moment.
    My current design is bad, it is a mainVI which checks the menu and
    frontpanel buttons, decides which operation or calculation (if any) is
    selected, and sends that to a case structure to perform the operation.
    This is sloooow but the most common way in examples that I've seen. The
    major problem is that while processing the interface isn't checked and
    therefore mouseclicks might be lost. Let's say the processing takes like
    500ms on average, that is kind of slow between user-interface querys so it
    would feel unresponsive in the mean time.
    So here's my three ideas so far, I'd love some comments on what will be FAST
    and what would be worthwhile to spend my time on:
    1. Leave the app as-is, latch the booleans. However you can't latch
    mouse-clicks on a picture indicator that I knew of. I emailed NI before
    about this and they just suggested adjusting execution priorities. Anybody
    else messed around with this? Probably the worst option, but would take zero
    programming.
    2. Divorce the user interface and the processing. Create two parallel
    while-loops in the same VI, one checks the buttons/menu on the front panel
    the other processes the request or calculation. Let's say on average UI
    checking takes 1.2ms and processing takes about 500ms. Also in this case is
    the watch icon still really my best option (since checking buttons/menu only
    takes like 1.5ms on average) for not wasting time repeatedly checking when
    there's no input and dividing up cputime accordingly? Seems like there'd be
    some overhead in switching back and forth repeatedly.
    3. Going all-out and changing to somewhat of an object structure. That way
    the UI could create a new "execution" refnum, maintain some list of created
    objects, process, return values, destroy any object, so everything could be
    going on in parallel. That way one slow calculation won't bog down the rest
    of the things the UI requests. The idea is far too abstract to me at this
    point, but on a single CPU w98 system is it even worth my thinking about
    such a structure? I get the feeling I'd see zero performance change between
    the two, in fact maybe worse from any labview thread overhead!
    Thanks for any comments. I have seen DAQ intensive apps discussed often, but
    don't usually catch much on large user interface apps.
    -joey

    Hi Joey
    First check are you are not recalculating the values on ever iteration of the user interface loop but are you only recalculating
    on any change in the user interface values.
    Otherwise I would use idea No. 2 but with these changes.
    1. Only check the whole user interface every 200-300ms, 1.5ms loop time will unnecessarily load the CPU.
    2. Each user interaction could be given a string representation and then placed in a queue to wait for the calculation loop to
    have time to process it.(So the user instructions are not lost)
    3. Have separate loops for faster and slower calculations (or more) with each having their own queue.
    4. The extension to the idea's of having separate loops, is to have each loop in a separate independently running VI (see
    VIserver). Still use the queue's to pass the data. This method would allow the calculations and the user interface to run on
    separate threads and also lets you alter the execution priority for each VI to fine tune the execution times.
    Following these instructions you would produce a basic client-server architecture for your user interface, as long as the UI
    doesn't require too many slow calculation results before continuing then this should work well.
    If this is still not fast enough then, if you have used suggestion No.4, the calculations can be moved off the users computer to a
    faster server (using VIserver) also assuming they are networked.
    Hope this gives you some ideas.
    Tim S
    Joseph Oravec wrote:
    > Ok let's say you're writing a user interface and nothing involves
    > special-resources like a daqcard so there's no constraints on using things
    > at once. These are some kind of stupid questions and ideas but I'm really
    > not sure how to write a quality app with user interface at the moment.
    >
    > My current design is bad, it is a mainVI which checks the menu and
    > frontpanel buttons, decides which operation or calculation (if any) is
    > selected, and sends that to a case structure to perform the operation.
    >
    > This is sloooow but the most common way in examples that I've seen. The
    > major problem is that while processing the interface isn't checked and
    > therefore mouseclicks might be lost. Let's say the processing takes like
    > 500ms on average, that is kind of slow between user-interface querys so it
    > would feel unresponsive in the mean time.
    >
    > So here's my three ideas so far, I'd love some comments on what will be FAST
    > and what would be worthwhile to spend my time on:
    >
    > 1. Leave the app as-is, latch the booleans. However you can't latch
    > mouse-clicks on a picture indicator that I knew of. I emailed NI before
    > about this and they just suggested adjusting execution priorities. Anybody
    > else messed around with this? Probably the worst option, but would take zero
    > programming.
    >
    > 2. Divorce the user interface and the processing. Create two parallel
    > while-loops in the same VI, one checks the buttons/menu on the front panel
    > the other processes the request or calculation. Let's say on average UI
    > checking takes 1.2ms and processing takes about 500ms. Also in this case is
    > the watch icon still really my best option (since checking buttons/menu only
    > takes like 1.5ms on average) for not wasting time repeatedly checking when
    > there's no input and dividing up cputime accordingly? Seems like there'd be
    > some overhead in switching back and forth repeatedly.
    >
    > 3. Going all-out and changing to somewhat of an object structure. That way
    > the UI could create a new "execution" refnum, maintain some list of created
    > objects, process, return values, destroy any object, so everything could be
    > going on in parallel. That way one slow calculation won't bog down the rest
    > of the things the UI requests. The idea is far too abstract to me at this
    > point, but on a single CPU w98 system is it even worth my thinking about
    > such a structure? I get the feeling I'd see zero performance change between
    > the two, in fact maybe worse from any labview thread overhead!
    >
    > Thanks for any comments. I have seen DAQ intensive apps discussed often, but
    > don't usually catch much on large user interface apps.
    >
    > -joey

  • Report generation: server execution failed

    the app has been running for months. IS dept just upgraded machines and software. NT4.0 is now Win2000 and Office 97 is now Office2000. Report generation tool kit is not happy. Even running NI examples I get error -2146959355 server execution failed in Font Style.vi
    Lawrence M. David Jr.
    Certified LabVIEW Architect
    cell: 516.819.9711
    http://www.aleconsultants.com
    [email protected]

    Searching the Microsoft's web site, I found some info on this error:
    If you have never had Norton AntiVirus installed on your computer, follow the following instructions:
    1. Open up the specific VI causing Error �2146959355
    2. Recompile this VI by pressing the Run arrow while holding down the CTRL and SHIFT keys
    3. Go to File � Save All
    4. Run the VI
    If you are using Norton AntiVirus 2000 with Microsoft Word 2000, follow these instructions:
    Note: This information was provided by http://support.microsoft.com. Please use these instructions at your own risk.
    1. Select Start � Run
    2. If Norton AntiVirus is installed as a stand alone application, type:
    regsvr32 -u "c:\program files\norton antivirus\officeav.dll"
    If this is successful, you will receive:
    DllUnregisterServer in C:\Program Files\Norton AntiVirus\OfficeAV.dll succeeded.
    If Norton AntiVirus is installed as a component of SystemWorks, type:
    regsvr32 -u "c:\program files\norton systemworks\norton antivirus\officeav.dll"
    If this is successful, you will receive:
    DllUnregisterServer in C:\Program Files\Norton Systemworks\Norton AntiVirus\OfficeAV.dll succeeded.
    3. Click OK
    Microsoft notes that in some cases you must rename the oleaut32.dll and reinstall Office 2000. Renaming oleaut32.dll usually requires that you boot your computer in MS-DOS mode.
    - Navigate to the directory where oleutt32.dll is located (usually C:\windows\system32) using the cd DOS command.
    - Type: rename oleaut32.dll renamed_oleaut32.dll and press Enter
    - Reinstall Microsoft Office
    Note: This problem seems to still exist with Office 2002.
    1. Unfortunately, this is how the activeX works. If Microsoft changes the activeX objects from one Office version to another, the executable built with Office97 will not work with Office2000. You will have to recompile your VI into the executable on a machine with Office2000 and toolkit configured for this version.
    2. For the error "server execution failed" with Text Report Example, select File � VI Properties. Select "Execution" from the category box and set the "Preferred Execution" to user interface. This should solve the problem.
    Zvezdana S."

  • How to get log information about any interface...scenario etc

    I have created an package which loads file in a perticular folder dynamically.
    here after loading each file i want to maintain the log i.e number of records inserted,updated,deleted,error etc,i came to know that in work repository snp_session,snp_sess_task_log, will have the statistics.but in these table records loaded available in the insert step.how do i query these tables properly,how do i get session no other information from odi.
    plz help me.
    Jai

    Thank u.
    I got one more way to solve this.
    SELECT <%=odiRef. getPrevStepLog("sess_no")%> FROM DUAL
    we can use this statement in a variable.
    After execution of the interface we can use this variable which lets us to know session_no of previous interface then we can use this session_no to get the log by quering tables in work_rep.
    Regards,
    Jai

  • Is this roughly how the labVIEW Execution Systems work?

    I've not taken a class in OS design, so I don't know the strategies used to implement multitasking, preemptive or cooperative. The description below is a rough guess.
    LabVIEW compiles Vis to execute within its own multitasking execution environment. This execution environment is composed of 6 execution systems. Each execution system has 5 priority queues (say priorities 0->4). Vis are compiled to one or more tasks which are posted for execution in these queues.
    An execution system may either have multiple threads assigned to execute tasks from each priority queue, or may have a single thread executing all tasks from all priority queues. The thread priorities associated with a multithreaded execution system are assigned according to the queue that they service. There are therefore 5 available thread priority levels, one for each of the 5 priority level queues.
    In addition to the execution queues, there are additional queues that are associated with tasks suspended in various wait states. (I don't know whether there are also threads associated with these queues. It seems there is.)
    According to app. note 114, the default execution environment provides 1 execution system with 1 thread having a priority level of 1, and 5 execution systems with 10 prioritized threads, 2 threads per priority queue. NI has titled the single threaded execution system "user interface" and also given names to the other 5. Here they will be called either "user interface" or "other".
    The "user interface" system is responsible for all GUI actions. It monitors the keyboard and mouse, as well as drawing the controls. It is also used to execute non-thread-safe tasks; tasks whose shared objects are not thread mutex protected.
    Vis are composed of a front panel and diagram. The front panel provides an interface between the vi diagram, the user, and the calling vi. The diagram provides programmatic data flow between various nodes and is compiled into one or more machine coded tasks. In addition to it own tasks, a diagram may also call other vis. A vi that calls another vi does not actually programmatically branch to that vi. Rather, in most cases the call to another vi posts the tasks associated with the subvi to the back of one of the labVIEW execution system�s queues.
    If a vi is non-reentrant, its tasks cannot run simultaneously on multiple threads. This implies a mutex like construction around the vi call to insure only one execution system is executing the vi. It doesn�t really matter where or how this happens, but somehow labVIEW has to protect an asynchronous vi from simultaneous execution, somehow that has to be performed without blocking an execution queue, and somehow a mutex suspended vi has to be returned to the execution queue when the mutex is freed. I assume this to be a strictly labVIEW mutex and does not involve the OS. If a vi is reentrant, it can be posted/ran multiple times simultaneously. If a vi is a subroutine, its task (I think there is always only one) will be posted to the front of the caller's queue rather than at the back of the queue (It actually probably never gets posted but is simply mutex tested at the call.) A reentrant-subroutine vi may be directly linked to its caller since it has no restrictions. (Whether in fact labVIEW does this, I don�t know. In any event, it would seem in general vis that can be identified as reentrant should be specified as such to avoid the overhead of mutexing. This would include vis that wrap reentrant dll calls.)
    The execution queue to which a vi's tasks are posted depends upon the vi execution settings and the caller's execution priority. If the caller's execution priority is less than or equal the callee's execution settings, then the callee's tasks are posted to the back of the callee's specified execution queue. If the caller's execution priority is greater than the callee's specifications, then the callee's tasks are posted to the back of the caller's queue. Under most conditions, the vi execution setting is set to "same as caller" in which case the callee�s tasks are always posted to the back of the caller's execution queue. This applies to cases where two vis are set to run either in the other execution systems or two vis are set to run in the user interface execution system. (It�s not clear what happens when one vi is in the �user interface� system and the other is not. If the rule is followed by thread priority, any background tasks in the �other� systems will be moved to the user interface system. Normal task in the �other� systems called by a vi in the �user interface� system will execute in their own systems and vice versa. And �user interface� vis will execute in the caller�s �other� system if the caller has a priority greater than normal.)
    Additionally, certain nodes must execute in the "user interface" execution system because their operations are not thread-safe. While the above generally specifies where a task will begin and end execution, a non-thread safe node can move a task to the �user interface� system. The task will continue to execute there until some unspecified event moves it back to its original execution system. Note, other task associated to the vi will be unaffected and will continue to execute in the original system.
    Normally, tasks associated with a diagram run in one of the �other� execution systems. The tasks associated with drawing the front panel and monitoring user input always execute in the user interface execution system. Changes made by a diagram to it own front panel are buffered (the diagram has its own copy of the data, the front panel has its own copy of the data, and there seems to be some kind of exchange buffer that is mutexed), and the front panel update is posted as a task to the user interface execution system. Front panel objects also have the advanced option of being updated sequentially; presumably this means the diagram task that modifies the front panel will be moved to the user interface execution system as well. What this does to the data exchanged configuration between the front panel and diagram is unclear as presumably both the front panel and diagram are executing in the same thread and the mutex and buffer would seem to be redundant. While the above is true for a control value it is not clear whether this is also true for the control properties. Since a referenced property node can only occur on the local diagram, it is not clear it forces the local diagram to execute in the user interface system or whether they too are buffered and mutexed with the front panel.
    If I were to hazard a guess, I would say that only the control values are buffered and mutexed. The control properties belong exclusively to the front panel and any changes made to them require execution in the �user interface� system. If diagram merely reads them, it probably doesn�t suffer a context switch.
    Other vis can also modify the data structure defining the control appearance and values remotely using un-reference property nodes. These nodes are required to run in the user interface system because the operation is not thread-safe and apparently the diagram-front-panel mutex is specifically between the user interface execution system and the local diagram thread. Relative to the local diagram, remote changes by other vis would appear to be user entries.
    It is not clear how front panels work with reentrant vis. Apparently every instance gets its own copy of the front panel values. If all front panel data structures were unique to an instance, and if I could get a vi reference to an instance of a reentrant vi, I could open multiple front panels, each displaying its own unique data. It might be handy, sort of like opening multiple Word documents, but I don�t think that it�s available.
    A note: It is said that the front panel data is not loaded unless the front panel is opened. Obviously the attributes required to draw an object are not required, nor the buffer that interfaces with the user. This rule doesn�t apply though that if property references are made to front panel objects, and/or local variables are used. In those cases at least part of the front panel data has to be present. Furthermore, since all data is available via a control reference, if used, the control�s entire data structure must be present.
    I use the vi server but haven�t really explored it yet, nor vi reference nodes, but obviously they too make modifications to unique data structures and hence are not thread-safe. And in general, any node that accesses a shared object is required to run in the user interface thread to protect the data associated with the object. LabVIEW, does not generally create OS level thread mutexes to protect objects probably because it becomes to cumbersome... Only a guess...
    Considering the extra overhead of dealing with preemptive threading, I�m wondering if my well-tuned single threaded application in LV4.1 won�t out perform my well-tuned multithreaded application in LV6.0, given a single processor environment�
    Please modify those parts that require it.
    Thanks�
    Kind Regards,
    Eric

    Ben,
    There are two types of memory which would be of concern. There is temporary and persistent. Generally, if a reentrant vi has persistent memory requirements, then it is being used specifically to retain those values at every instance. More generally, reentrant code requires no persistent memory. It is passed all the information it needs to perform its function, and nothing is retained. For this type of reentrant vi, memory concern to which you refer could become important if the vis are using several MBytes of temporary storage for intermediate results. In that case, as you could have several copies executing at once, your temporary storage requirements have multiplied by the number of simultaneous copies executing. Your max memory use is going to rise, and as labview allocates memory rather independently and freely, the memory use of making them reentrant might be a bit of a surprise.
    On the other hand, the whole idea of preemtive threading is to give those tasks which require execution in a timely fashion the ability to do so regardless of what other tasks might be doing. We are, after all, suffering the computational overhead of multithreading to accomplish this. If memory requirements are going to defeat the original objective, then we really are traversing a circle.
    Anyway, as Greg has advised, threads are supposed to be used judiciously. It isn't as though your going to have all 51 threads up at the same time. In general I think, overall coding stategy should be to minimize the number of threads while protecting those tasks that absolutely require timely execution.
    In that sense, it would have been nice if NI had retained two single threaded systems, one for the GUI and one for the GUI interface diagrams. I've noticed that control drawing is somewhat slower under LV6.0 than LV4.1. I cannot, for example, make a spreadsheet scroll smoothly anymore, even using buffered graphics. This makes me wonder how many of my open front panel diagrams are actually running on the GUI thread.
    And, I wonder if threads go to sleep when not in use, for example, on a wait, or wait multiple node. My high priority thread doesn't do a lot of work, but the work that it does is critical. I don't know what it's doing the rest of the time. From some of Greg's comments, my impression is it in some kind of idle mode: waking up and sleeping, waking up and sleeping,..., waking up, doing something and sleeping... etc. I suppose I should try to test this.
    Anyway that's all an aside...
    With regard to memory, your right, there are no free lunches... Thanks for reminding me. If I try this, I might be dismayed by the additional memory use, but I won't be shocked.
    Kind Regards,
    Eric

  • A Bug in 11.1 array interface

    I have just encounter some code that runs fine in Oracle 9 to 10 but in 11.1 I am getting a different result.
    basically I have this SQL
    "INSERT INTO $table ( row_1, row_2, row_3) VALUES (?,?,?)"
    and bind all three to this array
    @var2 = (2,2,2,2,'s',2,2,2,2,2);
    using OCIBindByName and OCIBindDynamic and then execute them with
    OCIStmtExecute, with a mode (IN)
    of OCI_BATCH_ERRORS OCI_COMMIT_ON_SUCCESS (or 160)
    what happens is the commit does not happen in 11 but does happen in 9~10?
    Did something change in the execute in 11 or should I raise this up to a bug status??

    Ok here is a trace of the OCI Calls I use, and yes I the last one I give is a OCITransCommit
    st_execute_array INSERT count=10 (ARRAY(0x1a725c8) ARRAY(0x1a934c4) undef)
    OCIBindByName(876dad8,19cab00,8755e68,":p1",3,0,1,1,0,0,0,0,0,DATA_AT_EXEC)=SUCCESS
    OCIBindDynamic(876eda8,8755e68,19caadc, phs_in,19caadc,phs_out)=SUCCESS
    OCIBindByName(876dad8,1a27810,8755e68,":p2",3,0,1,1,0,0,0,0,0,DATA_AT_EXEC)=SUCCESS
    OCIBindDynamic(876ec68,8755e68,1a277ec,phs_in,1a277ec,phs_out)=SUCCESS
    OCIBindByName(876dad8,1a2bc18,8755e68,":p3",3,0,1,1,0,0,0,0,0,DATA_AT_EXEC)=SUCCESS
    OCIBindDynamic(876eb28,8755e68,1a2bbf4,phs_in,1a2bbf4,phs_out)=SUCCESS
    OCIStmtExecute(8755db0,876dad8,8755e68,10,0,0,0,160)=SUCCESS_WITH_INFO ->(OCI_BATCH_ERRORS|OCI_COMMIT_ON_SUCCESS)<--
    OCIAttrGet(876dad8,OCI_HTYPE_STMT,140f4ec,0,129,8755e68)=SUCCESS
    OCIErrorGet(8755e68,1,"<NULL>",140f48c,"ORA-24381: error(s) in array DML",1024,2)=SUCCESS
    OCIErrorGet(8755e68,2,"<NULL>",140f48c,"ORA-24381: error(s) in array DML",1024,2)=NO_DATA
    OCIAttrGet(876dad8,OCI_HTYPE_STMT,140f55c,0,73,8755e68)=SUCCESS
    st_execute_array 1 errors in batch.
    OCIHandleAlloc(8727940,140f578,OCI_HTYPE_ERROR,0,0)=SUCCESS
    OCIHandleAlloc(8727940,140f570,OCI_HTYPE_ERROR,0,0)=SUCCESS
    OCIParamGet(8755e68,2,876c3c0,140f578,0)=SUCCESS
    OCIAttrGet(876c968,OCI_HTYPE_ERROR,140f550,0,74,8755e68)=SUCCESS
    st_execute_array error in row 4.
    OCIErrorGet(876c968,1,"<NULL>",140f4cc,"ORA-01722: invalid number",1024,2)=SUCCESS
         OCIErrorGet(876c968,2,"<NULL>",140f4cc,"ORA-01722: invalid number",1024,2)=NO_DATA
    OCIHandleFree(876c3c0,OCI_HTYPE_ERROR)=SUCCESS
    OCIHandleFree(876c968,OCI_HTYPE_ERROR)=SUCCESS
    OCITransCommit(8755db0,8755e68,0)=SUCCESS
    st_execute_array warning: ORA-24381: error(s) in array DML (SUCCESS_WITH_
    INFO: error possibly near <*> indicator at char 56 in 'INSERT INTO test_ea( row_1, row_2,
    row_3) VALUES (:p1,:<*>p2,:p3)') [for Statement "INSERT INTO test_ea( row_1,  row_2, row_
    3) VALUES (?,?,?)"]
    and here is the code snipits but it is take out of a larger program so I will not run
    sb4
    phs_in(dvoid octxp, OCIBind bindp, ub4 iter, ub4 index,
         dvoid **bufpp, ub4 alenp, ub1 piecep, dvoid **indpp)
         phs_t phs = (phs_t)octxp;
    STRLEN phs_len;
    AV *tuples_av;
         SV *sv;
         AV *av;
         SV **sv_p;
         /* Check for bind values supplied by tuple array. */
         tuples_av = phs->imp_sth->bind_tuples;
         if(tuples_av) {
              /* NOTE: we already checked the validity in ora_st_bind_for_array_exec(). */
              sv_p = av_fetch(tuples_av, phs->imp_sth->rowwise ? (int)iter : phs->idx, 0);
              av = (AV*)SvRV(*sv_p);
              sv_p = av_fetch(av, phs->imp_sth->rowwise ? phs->idx : (int)iter, 0);
              sv = *sv_p;
              if(SvOK(sv)) {
              *bufpp = SvPV(sv, phs_len);
              phs->alen = (phs->alen_incnull) ? phs_len+1 : phs_len;
              phs->indp = 0;
              } else {
              *bufpp = SvPVX(sv);
              phs->alen = 0;
              phs->indp = -1;
    *alenp  = phs->alen;
    *indpp  = &phs->indp;
    *piecep = OCI_ONE_PIECE;
    if (!tuples_av && (index > 0 || iter > 0))
              croak(" Arrays and multiple iterations not currently supported (in %d/%d)", index,iter);
    return OCI_CONTINUE;
    sb4
    phs_out(dvoid octxp, OCIBind bindp,
         ub4 iter,     /* execution itteration (0...)     */
         ub4 index,     /* array index (0..)          */
         dvoid **bufpp,     /* A pointer to a buffer to write the bind value/piece.     */
         ub4 **alenpp,     /* A pointer to a storage for OCI to fill in the size     */
                   /* of the bind value/piece after it has been read.     */
         ub1 piecep,     / */
         dvoid **indpp,     /* Return a pointer to contain the indicator value which either an sb2     */
                   /* value or a pointer to an indicator structure for named data types.     */
         ub2 **rcodepp)     /* Returns a pointer to contains the return code.     */
    phs_t phs = (phs_t)octxp;     /* context */
    if (phs->desc_h) { /* a  descriptor if present  (LOBs etc)*/
              *bufpp  = phs->desc_h;
              phs->alen = 0;
    } else {
              SV *sv = phs->sv;
              if (SvTYPE(sv) == SVt_RV && SvTYPE(SvRV(sv)) == SVt_PVAV) {
              sv = av_fetch((AV)SvRV(sv), (IV)iter, 1);
              if (!SvOK(sv))
                        sv_setpv(sv,"");
              bufpp = SvGROW(sv, (size_t)(((phs->maxlen < 28) ? 28 : phs->maxlen)+1)/for null*/);
              phs->alen = SvLEN(sv);     /* max buffer size now, actual data len later */
    *alenpp = &phs->alen;
    *indpp  = &phs->indp;
    *rcodepp= &phs->arcode;
    *piecep = OCI_ONE_PIECE;
    return OCI_CONTINUE;
    static int
    do_bind_array_exec(sth, imp_sth, phs)
    SV *sth;
    imp_sth_t *imp_sth;
    phs_t *phs;
         dTHX;
    sword status;
    OCIBindByName_log(imp_sth->stmhp, &phs->bndhp, imp_sth->errhp,
    (text*)phs->name, (sb4)strlen(phs->name),
    0,
    phs->maxlen ? (sb4)phs->maxlen : 1, /* else bind "" fails */
    (ub2)phs->ftype, 0,
    NULL, /* ub2 alen_ptr not needed with OCIBindDynamic /
    0,
    0, /* max elements that can fit in allocated array */
    NULL, /* (ptr to) current number of elements in array */
    (ub4)OCI_DATA_AT_EXEC,
    status);
    if (status != OCI_SUCCESS) {
    oci_error(sth, imp_sth->errhp, status, "OCIBindByName");
    return 0;
    OCIBindDynamic_log(phs->bndhp, imp_sth->errhp,
    (dvoid *)phs, phs_in,
    (dvoid *)phs, phs_out, status);
    if (status != OCI_SUCCESS) {
    oci_error(sth, imp_sth->errhp, status, "OCIBindDynamic");
    return 0;
    return 1;
    static void
    init_bind_for_array_exec(phs)
    phs_t *phs;
         dTHX;
    if (phs->sv == &sv_undef) { /* first bind for this placeholder  */
    phs->is_inout = 0;
    phs->maxlen = 1;
    /* treat Oracle7 SQLT_CUR as SQLT_RSET for Oracle8 */
    if (phs->ftype==102)
    phs->ftype = 116;
    /* some types require the trailing null included in the length. */
    /* SQLT_STR=5=STRING, SQLT_AVC=97=VARCHAR */
    phs->alen_incnull = (phs->ftype==SQLT_STR || phs->ftype==SQLT_AVC);
    int
    st_execute_array(sth, imp_sth, tuples, tuples_status, columns, exe_count)
    SV *sth;
    imp_sth_t *imp_sth;
    SV *tuples;
    SV *tuples_status;
    SV *columns;
    ub4 exe_count;
         sword status, exe_status;
    int is_select = (imp_sth->stmt_type == OCI_STMT_SELECT);
    AV tuples_av, tuples_status_av, *columns_av;
    ub4 oci_mode;
    ub4 num_errs;
    int i,j;
    int autocommit = 1;
    SV **sv_p;
         phs_t **phs;
         SV *sv;
         AV *av;
    int param_count;
    char namebuf[30];
    STRLEN len;
    int outparams = (imp_sth->out_params_av) ? AvFILL(imp_sth->out_params_av)+1 : 0;
    tuples_av = (AV*)SvRV(tuples);
    /* Check the `columns' parameter. */
    if(SvTRUE(columns)) {
    if(!SvROK(columns) || SvTYPE(SvRV(columns)) != SVt_PVAV) {
    croak("ora_st_execute_array(): columns not an array peference.");
    columns_av = (AV*)SvRV(columns);
    } else {
    columns_av = NULL;
    /* Check the `tuples_status' parameter. */
    if(SvTRUE(tuples_status)) {
    if(!SvROK(tuples_status) || SvTYPE(SvRV(tuples_status)) != SVt_PVAV) {
         croak("ora_st_execute_array(): tuples_status not an array reference.");
    tuples_status_av = (AV*)SvRV(tuples_status);
    av_fill(tuples_status_av, exe_count - 1);
    /* Fill in 'unknown' exe count in every element (know not how to get
    individual execute row counts from OCI). */
    for(i = 0; (unsigned int) i < exe_count; i++) {
    av_store(tuples_status_av, i, newSViv((IV)-1));
    } else {
    tuples_status_av = NULL;
    /* Nothing to do if no tuples. */
    if(exe_count <= 0)
    return 0;
    param_count=c_NUM_PARAMS(imp_sth);/*returns the # of parameters on the imp_sth struct*/
         phs = safemalloc(param_count*sizeof(*phs));
    memset(phs, 0, param_count*sizeof(*phs));
         for(j = 0; (unsigned int) j < exe_count; j++) {
         sv_p = av_fetch(tuples_av, j, 0);
    if(sv_p == NULL) {
    Safefree(phs);
    croak("Cannot fetch tuple %d", j);
    sv = *sv_p;
    if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV) {
    Safefree(phs);
    croak("Not an array ref in element %d", j);
    av = (AV*)SvRV(sv);
    for(i = 0; i < param_count; i++) {
    if(!phs) {
    SV **phs_svp;
    sprintf(namebuf, ":p%d", i+1);
    phs_svp = hv_fetch(imp_sth->all_params_hv,
    namebuf, strlen(namebuf), 0);
    if (phs_svp == NULL) {
    Safefree(phs);
    croak("Can't execute for non-existent placeholder :%d", i);
    phs[i] = (phs_t*)(void*)SvPVX(*phs_svp); /* placeholder struct */
    if(phs[i]->idx < 0) {
    Safefree(phs);
    croak("Placeholder %d not of ?/:1 type", i);
    init_bind_for_array_exec(phs[i]); /*bind the value */
    sv_p = av_fetch(av, phs[i]->idx, 0);
    if(sv_p == NULL) {
    Safefree(phs);
    croak("Cannot fetch value for param %d in entry %d", i, j);
                   sv = *sv_p;
         /*check to see if value sv is a null (undef) if it is upgrade it*/
                   if (!SvOK(sv))     {
                        if(SvUPGRADE(sv, SVt_PV)){} /* For GCC not to warn on unused result */
                   else {
              SvPV(sv, len);
         /* Find the value length, and increase maxlen if needed. */
         if(SvROK(sv)) {
         Safefree(phs);
         croak("Can't bind a reference (%s) for param %d, entry %d",
         neatsvpv(sv,0), i, j);
         if(len > (unsigned int) phs[i]->maxlen)
         phs[i]->maxlen = len;
         /* Do OCI bind calls on last iteration. */
         if( ((unsigned int) j ) == exe_count - 1 ) {
         if(!do_bind_array_exec(sth, imp_sth, phs[i])) {
         Safefree(phs);
         Safefree(phs);
    /* Store array of bind typles, for use in OCIBindDynamic() callback. */
    imp_sth->bind_tuples = tuples_av;
    imp_sth->rowwise = (columns_av == NULL);
    oci_mode = OCI_BATCH_ERRORS;
    if(autocommit)
    oci_mode |= OCI_COMMIT_ON_SUCCESS;
         OCIStmtExecute_log(imp_sth->svchp, imp_sth->stmhp, imp_sth->errhp,
    exe_count, 0, 0, 0, oci_mode, exe_status);
         imp_sth->bind_tuples = NULL;
    if (exe_status != OCI_SUCCESS) {
              oci_error(sth, imp_sth->errhp, exe_status, ora_sql_error(imp_sth,"OCIStmtExecute"));
    if(exe_status != OCI_SUCCESS_WITH_INFO)
    return -2;
    OCIAttrGet_log(imp_sth, &num_errs, 0, OCI_ATTR_NUM_DML_ERRORS, status);
    if(num_errs && tuples_status_av) {
    OCIError row_errhp, tmp_errhp;
    ub4 row_off;
    SV *err_svs[2];
    /*AV err_av;/
    sb4 err_code;
    err_svs[0] = newSViv((IV)0);
    err_svs[1] = newSVpvn("", 0);
    OCIHandleAlloc_log(imp_sth->envhp, &row_errhp, OCI_HTYPE_ERROR, status);
    OCIHandleAlloc_log(imp_sth->envhp, &tmp_errhp, OCI_HTYPE_ERROR, status);
    for(i = 0; (unsigned int) i < num_errs; i++) {
    OCIParamGet_log(imp_sth->errhp, OCI_HTYPE_ERROR,
    tmp_errhp, (dvoid *)&row_errhp,
    (ub4)i, status);
    OCIAttrGet_log(row_errhp, OCI_HTYPE_ERROR, &row_off, 0,
    OCI_ATTR_DML_ROW_OFFSET, imp_sth->errhp, status);
    sv_setpv(err_svs[1], "");
    err_code = oci_error_get(row_errhp, exe_status, NULL, err_svs[1], debug);
    sv_setiv(err_svs[0], (IV)err_code);
    av_store(tuples_status_av, row_off,
    newRV_noinc((SV *)(av_make(2, err_svs))));
    OCIHandleFree_log(tmp_errhp, OCI_HTYPE_ERROR, status);
    OCIHandleFree_log(row_errhp, OCI_HTYPE_ERROR, status);
    /* Do a commit here if autocommit is set, since Oracle
    doesn't do that for us when some rows are in error. */
    if(autocommit) {
    OCITransCommit_log(imp_sth->svchp, imp_sth->errhp,
    OCI_DEFAULT, status);
    if (status != OCI_SUCCESS) {
    oci_error(sth, imp_sth->errhp, status, "OCITransCommit");
    return -2;
    if(num_errs) {
    return -2;
    } else {
    ub4 row_count = 0;
              OCIAttrGet_stmhp_log(imp_sth, &row_count, 0, OCI_ATTR_ROW_COUNT, status);
    return row_count;

  • Problem with tableview iterator

    Dear friends.
    I try to adopt tableview iterator in my customer's BSP pages. So, I programmed test page.
    METHOD if_htmlb_tableview_iterator~render_row_start .
      m_row_ref ?= p_row_data_ref.
    ENDMETHOD.
    M_ROW_REF is "Static Attribute" and "Public" and "Type Ref To Z3TYDISP"
    z3tydisp has structure as below
    REQNO          NUMC     12
    VGUBUN          CHAR     1
    DSCOFVGUBUN     STRING     0
    REQDT          DATS     8
    RNAME          CHAR     10
    VCOMP          CHAR     30
    VNAME          CHAR     10
    VPLACE          CHAR     5
    VPLACEDSC     CHAR     20
    APPROVAL     CHAR     1
    DSCOFAPPROVAL     STRING     0
    AND... p_row_data_ref has structure below
    REQNO     N     12
    VGUBUN     C     1
    DSCOFVGUBUN     g     0
    REQDT     D     8
    RNAME     C     10
    VCOMP     C     30
    VNAME     C     10
    VPLACE     C     5
    VPLACEDSC     C     20
    APPROVAL     C     1
    DSCOFAPPROVAL     g     0
    In my option, p_row_data_ref has same structure compared with z3tydisp. But there is "CX_SY_MOVE_CAST_ERROR". How I have to define "z3tydisp"????

    >><b>M_ROW_REF is "Static Attribute" and "Public" and "Type Ref To Z3TYDISP"</b>
    instead of this make your M_ROW_REF a instantaneous attribute. since static attribute are intantiated only once when object created and are shared by all other intances. m_row_ref contains data about the table you are going to render using tableview. so it should be public, so that get different data for different iterator objects.
    your p_row_data_ref must be of type ref to data which is superior class of data types.
    and if you have defined iterator "IF_HTMLB_TABLEVIEW_ITERATOR" in your interfaces. then you need not to define structure for p_row_data_ref, its already there in interface.
    hope this will solve your problem,
    regards,
    hemendra

  • How to use two lookup in single interface in ODI 11g

    Hi All,
    I am trying to load GL_CODE_COMBINATIONS CC + FND_FLEX_VALUES_VL FF to target table W_GL_CODE_COMBINATIONS.
    I duplicated FND_FLEX_VALUES_VL as FND_FLEX_VALUES_VL1 FF1 for my join condition.
    In target table I have included 2 new columns named SEGMENT2_DESC and SEGMENT3_DESC.
    In my interface i am using FND_FLEX_VALUES_VL as lookup and join condition is CC.SEGMENT2=FF.FLEX_VALUE
    Mapping expression of target column SEGMENT2_DESC is FF.DESCRIPTION.
    In my interface i am using FND_FLEX_VALUES_VL1 as lookup and join condition is CC.SEGMENT3=FF1.FLEX_VALUE
    Mapping expression of target column SEGMENT3_DESC is FF1.DESCRIPTION.
    Execution of this interface taking more time. When using single lookup and SEGMENT2_DESC data loading is fast.
    Kindly advice me regarding this.
    Thanks in advance.

    Are the number of records in lookup very large ?
    Why cant you use the same lookup once and have the join containing both the conditions.
    YOu dont have to use lookup at all. YOu can also drag the "so called" lookup table in the source and build the join conditions yourself.
    The join condition would be
    CC.SEGMENT2=FF.FLEX_VALUE and CC.SEGMENT3=FF.FLEX_VALUE

  • Class parametrized type extends and implements, possible?

    Hi all,
    Maybe I'm not understanding it well, but every time I try to use generics for something useful I get to a point in which I need to define something like this:
    public interface MyInterface<T> {
    public T get();
    public void set(T var);
    public class MyClass<T extends Component & MyInterface<T2> > {
    T myObject;
    .... somewhere in the code:
    T2 value;
    value = myObject.get();
    To me, this would be very useful, but MyClass does not compile. I hope what I try to do is clear (I want T to be a sub class of Component that also implements a parametrized interface). I don't know what I'm doing wrong nor if this is even possible. Believe me when I say I have done a lot of research (and people thought C++ templates where complicated...).
    My main problem is having a parametrized type that contains a parametrized type and trying to have both types' parameters available for use in the class.
    Any ideas?

    This compiles in beta2:
    public class MyClass<T2, T extends Component & MyInterface<T2> > {
       T myObject = null;
      void x() {
          myObject.bar();
          T2 a = myObject.get();
    interface MyInterface<T> {
          T get();
          void set(T var);
    class Component {
        public void bar() {}
    }but removing the public modifier from Component.bar() will give the error: cannot find symbol.

  • BAPI call Error - Inbound Interface to SAP

    Hi Experts,
    my middleware side  using IBM WebSphere Message Broker SAP Adapter request node ,
    Problem after the execution of the interface the adapter node failed and it in the log its giving the error message:
    "{[3442]Caught Throwable}.{[3450]throw a RecordNotFoundException}.{com.ibm.j2ca.sap.exception.SapBAPIException}."
    I had seen some post in forum as " Quantity field type should be assigned a DECIMAL in the ESQL code."
    so i checked in my bapi for quantity ( units per container field ) its assigend with decimals. So while checking in the middleware side..
    In the imported BAPI layout UnitsPerContainer appears in 2 locations:
    > SapTinContain : Here UnitsPerContainer is defined as decimal
    > SapTinRecord3: But here UnitsPerContainer is defined as string
    why is there a difference ? Its a connectivity Problem??
    Donu2019t know whether because of this difference am getting the " Record Not Found Exception ".
    Please help me .
    Thanks in Advance.
    Regards,
    Priya.

    How did you fixed the error i am getting this type of error only?

  • How to delay the exection of an interface

    Hi Experts,
    I have a file to file scenario. There are two such interfaces.
    I want to introduce a delay in the execution of one interface.
    I have tried using sleep function in the mapping, but its not to mch effect.
    Is there ne way we can do it??? how abt OS command after/before execution??
    what should the script be?
    pls share your thughts
    Regards,
    Teja

    divyesh vasani wrote:
    With OS Script, in the second interface  before message processing option in adapter, you can use choice command in batch script.
    >
    > Find some links on Choice command in batch.
    >
    >
    >
    > ---Div
    Managed to find the anatomy of choice command in batch file to introduce delay:
    Choice command in DOS is used to select menu items.
    Here you can use with below syntax in OS command before processing in second interface, sender file adapter
    choice /C:a /D:a /T:2>nul
    Where 2 is the delay in seconds and keep rest as them.
    I tested on windows XP on dos command.
    --Div

Maybe you are looking for

  • Reg:Graphical view in workflow

    Hi to all, Now i am having IDES ECC 6.0 , I had put the TC SWDD i am getting workflow screen. But i couldnt find out the graphical view of that screen.But the graphical view and all i can get through ECC 5.0 version. Kinldy do the helpful. Thanks, Sa

  • How to download payload from b2b_instancemessage view in Oracle b2b 10g

    I am not able to extract message payload from B2B_INSTANCEMESSAGE VIEW. when i execute this query: select payload from b2b_instancemessage where documenttype like '%rsConfirmIncid%'; the output I get is "BLOB" I need the complete payload. can somebod

  • Quicktime errors in FCP

    I have a FCP project, comprising mini-DV footage I've digitized on my own system, and some DVCam footage I've dig'd at a facility with a deck. All to the same FW drive (500 gig Western Dig). Strange thing is, when I go to import the QT movies (from D

  • Comparing schema using OEM 10g

    Hi, IS there any way to compare schema from 2 different schema for Prod and test environments using OEM 10g. I have a comparison script which will work for mr but the report generated is not easily readeble. Please point out the steps if there is any

  • Cancelling or removing the scheduled job

    HI, I have job running ...i made use of the following SQL statements   Select * from All_scheduler_jobs;   select * from USER_SCHEDULER_JOBS;   select * from user_scheduler_running_jobs;And i see the job is running ...How do i cancel or remove the jo