Call procedure dynamically
can anyone tell me if it is possible to call aprocedure when the procedure name is held in a form item.
ie i have a form item :blocka.proc_name that has a list of all the procedures that the user can run. if the user selects 'proc1' into this item from the list i then want to be able to call the 'proc1' prcedure.
also is it possible to get a list of all procedures in a library, at the moment i have populated a table with the procedure names in order to populate my list, but i would prefer to be able to get the names from the library.
Thanks for your help
But, you could imagine a package solution, with an entry procedure that takes the number of the real procedure in argument...
Package PKG_PROCEDURES IS
PROCEDURE Proc_Select( PN$ProcNum in PLS_INTEGER ) ;
PROCEDURE P1 ( ... ) ;
PROCEDURE P2 ( ... ) ;
END ;
Package body PKG_PROCEDURES IS
PROCEDURE Proc_Select( PN$ProcNum in PLS_INTEGER )
IS
BEGIN
If PN$ProcNum = 1 Then
P1() ;
If PN$ProcNum = 2 Then
P2() ;
End if ;
END ;
PROCEDURE P1 ( ... )
IS
END ;
END ;That you call as follow:
PKG_PROCEDURES.Proc_Select( :BLOCK.ITEM ) ;Where :BLOCK.ITEM contains the number (or the name) of the procedure
Francois
Similar Messages
-
Calling procedure dynamically, from different schema, permissions issue
Hi,
I have a 'master_user' schema that needs to run DDL on a 'secondary_user' schema.
There appears to be some kind of permissions subtlety that I'm missing. Here are the simplified steps to create, test and troubleshoot:
Secondary schema has a procedure defined:
-- Run as SYSTEM (at build time)
CREATE OR REPLACE PROCEDURE secondary_user.execute_immediate(p_sql_statement IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE p_sql_statement;
END;
GRANT EXECUTE ON secondary_user.execute_immediate TO master_user;
I then want to call this procedure from master_user to execute DDL dynamically in secondary_user.
- Run as master_user
BEGIN
EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
END;
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-06512: at SECONDARY_USER.EXECUTE_IMMEDIATE", line 5
ORA-06512: at line 1
ORA-06512: at line 2
TROUBLESHOOTING SO FAR:
Now I can call this procedure directly:
-- As master_user
EXEC secondary_user.execute_immediate('drop table test1')
PL/SQL procedure successfully completed.
I can call the wrapped procedure as different users:
-- As secondary_user
BEGIN
EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
END;
PL/SQL procedure successfully completed.
-- As SYSTEM
BEGIN
EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
END;
PL/SQL procedure successfully completed.
Can you shed any light on this behaviour? The master_user clearly has permission to run the procedure, but it cannot see it from within an anonymous block. However SYSTEM can so what permission does SYSTEM have that master_user does not?
Much appreciated,
SiSomething doesn't add up:
SCOTT@orcl > create user secondary_user
2 identified by secondary_user
3 default tablespace users
4 quota unlimited on users
5 /
User created.
SCOTT@orcl > grant create session to secondary_user
2 /
Grant succeeded.
SCOTT@orcl > create user master_user
2 identified by master_user
3 default tablespace users
4 quota unlimited on users
5 /
User created.
SCOTT@orcl > grant create session to master_user
2 /
Grant succeeded.
SCOTT@orcl > CREATE OR REPLACE PROCEDURE secondary_user.execute_immediate(p_sql_statement IN VARCHAR2)
2
3 IS
4
5 BEGIN
6
7 EXECUTE IMMEDIATE p_sql_statement;
8
9 END;
10
11 /
Procedure created.
SCOTT@orcl > GRANT EXECUTE ON secondary_user.execute_immediate TO master_user;
Grant succeeded.
SCOTT@orcl >
SCOTT@orcl > create table secondary_user.test1(n number)
2 /
Table created.
SCOTT@orcl > connect master_user@orcl
Enter password:
Connected.
MASTER_USER@orcl > BEGIN
2
3 EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
4
5 END;
6
7 /
PL/SQL procedure successfully completed.
MASTER_USER@orcl >
Make sure table secondary_user.test1 exists when you run SP. And, as you can see, neither secondary_user nor master_user have any privs besides create session.
SY. -
Calling procedures dynamically
Hi All,
I am trying to call a stored procedure, from Form Builder, without hardcoding the procedure name. I am using Oracle 8.1.7 and Forms 5.0
I have tried using DBMS_SQL but this package does not enable me to return a PL/SQL Table or Record. Is there any other possibility of doing this?
Regards,
SohailTo dynamically execute a procedure in forms without hardcoding the procedure name do this:
FORMS_DDL('EXECUTE ' || v_procedure_name);
IF(NOT(FORMS_SUCCESS)) THEN
RAISE FORM_TRIGGER_FAILURE;
END IF; -
Calling SQL stored procedure dynamically
Hallo,
could anybody tell me how to call HANA SQL stored procedure dynamically?
The coding looks like this:
v_ProcedureName := '"' || KpiNamespace || '::' || KpiName || '"';
v_SQL := 'CALL ' || :v_ProcedureName || '( lt_outKPI )';
EXEC :v_SQL;
For this call I get the error message:
"Transaction rolled back by an internal error: wrong number or types of parameters in call: Physical table is not allowed in OUT table variable position: LT_OUTKPI: line 1 col 55 (at pos 54)"
The procedure to be called dynamically has a table output parameter.
Thanks in advance,
Best Regards,
Alexey Romanov.
Hi Alex,
Can you share your requirement on exactly what is the need to call the procedure dynamically?
For your question, have a look on the below:
1) Have a procedure named EMPLOYEE_DETAILS
http://scn.sap.com/servlet/JiveServlet/downloadImage/2-14895702-415799/236-170/pastedImage_0.png
2) Created one more procedure named Dynamically as shown below:
CREATE PROCEDURE Dynamically ()
AS
BEGIN
DECLARE QUERY VARCHAR(1000);
QUERY := 'call EMPLOYEE_DETIALS(?)';
EXECUTE IMMEDIATE (:QUERY);
END;
3) Output:
http://scn.sap.com/servlet/JiveServlet/downloadImage/2-14895702-415800/210-189/pastedImage_3.png
Regards,
Krishna Tangudu
Hi Krishna,
Thanks for your reply!
Unfortunately, I can neither go to ‘full discussion’, nor open the pictures, you have attached, nor see you reply.
That’s why I just add my reply to the problem description.
The procedure name is composed out of 2 parts on-the-fly, that is why I have to call it dynamically:
create local temporary table "#KPIEvals"(
"KpiNamespace" NVARCHAR(256) CS_STRING,
"KpiName" NVARCHAR(32) CS_STRING,
"KpiText" NVARCHAR(256) CS_STRING,
"Responsible" NVARCHAR(256) CS_STRING );
FOR cur_row as c_cursor DO
v_SQL := '';
v_ProcedureName := '"' || cur_row."KpiNamespace" || '::' || cur_row."KpiName" || '"';
v_SQL := 'CALL ' || :v_ProcedureName || '( lt_outKPI )';
EXEC :v_SQL;
v_SQL := 'INSERT INTO "#KPIEvals" SELECT * FROM :lt_out_kpi';
EXEC :v_SQL;
END FOR;
I guess there might be 2 reasons for the problem:
1. All the procedures are called dynamically in a loop.
2. All the procedures have an output parameter, which is a table.
Hope that helps,
Best Regards,
Alex.Hi Alexey, I think what you may need to do in this case is to do the insert into your temp table from within the dynamically called procedure, therefore no need for output param in your procedure call. You can then select from the temp table in your main procedure. Hope that makes sense.
Peter -
Calling a procedure dynamically in forms
Hi all
I'm using Oracle 6, is there anyway to call a procedure dynamically, i mean the procedure called differs according to a certain condition. The procedure is local in the form not in the database, how can this be achieved
ThanksHello,
user497979 wrote:
what i want is as the following
IF cond = 1 THEN
proc1;
ELSIF cond = 2 THEN
proc2;
ELSIF cond = 3 THEN
proc3;
.................. so onWell, i think the way you are showing with IF CONDITION is smart enough to call the procedures. And it will be also easy to understand.
I'm searching for a way to call the procedure as follows
proc||cond for exampleBut why? What is the purpose to do like this? Any efficiency or any logical reason?
Another option You can create one procedure and call the code depend on parameter you pass like
PROCEDURE MY_PROC(pCond IN NUMBER) IS
BEGIN
IF pCond=1 THEN
-- Do something here...
ELSIF pCond=2 THEN
-- Do something here...
ELSE
-- Do something here...
END IF;
END;And while calling the procedure you can call the procedure by passing the value of pCond upon your requirement like
MY_PROC(<parameter value>);But still the IF CONDITION exists either you use inside or outside the procedure.
-Ammad -
How I call procedure in interactive report??
Hi
Is possible that call procedure in interactive report on APEX?
Because
in region source it asked only sql statement so I am confused and I dont know how call procedure in interactive report ?
Edited by: esra aktas on 12.May.2011 11:04
Edited by: esra aktas on 12.May.2011 12:05I am confused... Now, acoording to my senior porject in school my advisor want to that lots of procedures' name and arguments that I have collect them in a table. I collected procedures in table then I wrote a procedure that call wanted procedure by using dynamic sql and run that procedure..I select procedure name on selectlist on apex then that procedure run.
So I want to my procedure's results must be as dataset in report . But report's source want to sql statement but I want to call the procedure as I mentioned.
If you have any idea about my situations , I want to get your adviced.
I have a this procedure.
create or replace
PROCEDURE CALLSPFROMTABLE(id number,arg1 varchar2,arg2 varchar2) as
table_name varchar2(30):='procedures';
procname varchar2(1000);
begin
EXECUTE IMMEDIATE 'select procname from ' || table_name || ' where id='||id into procname;
EXECUTE IMMEDIATE 'BEGIN '||procname||'('||arg1||','||arg2||'); END;';
END;id=>:p1_SP , arg1=>:P1_YIL arg2=>:P1_BIRIM from selectlists
Edited by: esra aktas on 12.May.2011 13:08
Edited by: esra aktas on 12.May.2011 13:17 -
How to run oracle stored procedure dynamically
How can I call a stored procedure dynamically. My requirement is to call a stored procedure based on user selection on a parameter screen. I do not want to hardcode proocedure name, but rather call dynamically.
If I use the same methodology as of running dynamic sql's Iam getting an error.
"invalid SQL statement after call to procedure"
v_cursorid INTEGER;
v_cnt NUMBER;
v_sqlstring VARCHAR2(2000);
v_sqlstring := 'execute insert_job_status('''||TO_CHAR(SYSDATE,
'dd-mon-yyyy HH:mi:ss')||''');';
v_cursorid := dbms_sql.open_cursor;
dbms_sql.parse(v_cursorid, v_sqlstring, dbms_sql.v7);
--cnt := dbms_sql.execute(v_cursorid);
dbms_sql.close_cursor(v_cursorid);EXECUTE is a SQL*Plus command. try
v_sqlstring := 'begin insert_job_status('''||TO_CHAR(SYSDATE,
'dd-mon-yyyy HH:mi:ss')||'''); end;';Cheers, APC -
I have oracle 8i
i have multiple identical schema for different country.
i write one procedure in one schema(country_1) and granted to all others for execute.
now i am connected to country_2 which doesn't have procedure,
and i am calling procedure of country_1(which has a procedure).
upto this everything is fine
but problem is i want to
execute the procedure on the recently connected schema(country_2),it is executing on country_1(where actual procedure is )
Thanks,
prathesh
([email protected])You need to add AUTHID CURRENT_USER to your create procedure command.
From the documentation
invoker_rights_clause
The invoker_rights_clause lets you specify whether the procedure executes with the privileges and in the schema of the user who owns it or with the privileges and in the schema of CURRENT_USER.
This clause also determines how Oracle resolves external names in queries, DML operations, and dynamic SQL statements in the procedure.
TTFN
John -
How to Call Procedure or Function
Hi,
How to call a procedure or function in apex, Please let me know
Thanks
SudhirHi,
This post might help
Re: How to Call procedure In Processes
Regards,
Jari -
HR_INFOTYPE_OPERATION not working when called from Dynamic action
Hi ,
Senario : I would like to execute a form from dynamic action which
creates a record in 0015 (Additional payment IT) .
I have writen the code as shown below am using FM HR_INFOTYPE_OPERATION
. When i execute the program from se38 it is creating a record, however it is
not created when it is called from dynamic action..when i debugged the code in
inside the FM HR_INFOTYPE_OPERATION there is a FM HR_MAINTAIN_MASTERDATA where
they are using call dialog (statement) and
sy-oncom = 'N' when called from Dynamic action and
sy-oncom = 'S' when called executed directly.
I tried to change the sy-oncom to S while run from Dynamic action it created
the record.
So Can anyone explain me abt sy-oncom and how can i resolve the issue..
code..
REPORT ZHRPYENH01 .
perFORM TERMIATION_9000.
INCLUDE DBPNPMAC.
FORM Termiation_9000 *
FORM TERMIATION_9000.
INFOTYPES : 0015.
*data : i .
*i ='c'.
*break-point.
*message i000(000) with i.
TABLES : PRELP.
DATA : P9000 TYPE PA9000." with header line.
DATA : P0000 TYPE STANDARD TABLE OF P0000 WITH HEADER LINE.
DATA : P0015 TYPE STANDARD TABLE OF P0015 WITH HEADER LINE.
DATA : HIRE_DATE LIKE SY-DATUM,
TERM_DATE LIKE SY-DATUM.
DATA : MOLGA LIKE T500L-MOLGA VALUE '25',
SEQNR LIKE PC261-SEQNR.
DATA : RGDIR TYPE STANDARD TABLE OF PC261 WITH HEADER LINE.
DATA : ACTUAL_PERIOD LIKE PA9000-RETENTION.
DATA : PNP-SW-FOUND TYPE SY-SUBRC ,
PNP-SY-TABIX TYPE SY-TABIX.
DATA : TER_PERNR LIKE PA0001-PERNR.
DATA : REF_PERNR LIKE PA0001-PERNR.
data : key type BAPIPAKEY.
data : payed_amount type p0015-BETRG.
data : future_payment_amount type p0015-BETRG.
data : p0002 like pa0002.
types : begin of t_deduction ,
deducation_date like p0015-begda,
future_payment_amount type p0015-BETRG.
types : end of t_deduction.
data : future_deduction type standard table of t_deduction with
*header line.
data : future_deduction type t_deduction .
data : RETURN type BAPIRETURN1.
*data : deduction_p0015 like standard table of p0015 with header line.
data : deduction_p0015 like p0015 .
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
****Prepare 0015 data for deduction
*deduction for payed amount
clear deduction_p0015.
*refresh deduction_p0015.
deduction_p0015-pernr = REF_PERNR.
*deduction_p0015-pernr = TER_PERNR.
deduction_p0015-lgart = 'M120'.
deduction_p0015-begda = sy-datum + 1 .
deduction_p0015-endda = sy-datum + 1 .
deduction_p0015-BETRG = payed_amount.
deduction_p0015-WAERS = 'SGD'.
deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
**deduction for future payment amount
*loop at future_deduction.
*clear deduction_p0015.
*deduction_p0015-pernr = REF_PERNR.
**deduction_p0015-pernr = TER_PERNR.
*deduction_p0015-lgart = 'M120'.
*deduction_p0015-begda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-endda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-BETRG = future_deduction-future_payment_amount.
*deduction_p0015-WAERS = 'SGD'.
*deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
*endloop.
Create a deduction wage type in 0015 for the employee
break-point.
CLEAR RETURN.
CALL FUNCTION 'BAPI_EMPLOYEET_ENQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
if not return is initial.
message E000(000) with
'Referred Employee could not be locked for referal payment deducation,
please try after some time'.
endif.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0015'
NUMBER = REF_PERNR
SUBTYPE = 'M120'
OBJECTID =
LOCKINDICATOR =
VALIDITYEND = SY-DATUM
VALIDITYBEGIN = SY-DATUM
RECORDNUMBER =
RECORD = deduction_p0015
OPERATION = 'COPY'
TCLAS = 'A'
DIALOG_MODE = '2'
NOCOMMIT =
VIEW_IDENTIFIER =
SECONDARY_RECORD =
IMPORTING
RETURN = return
KEY = key
break-point.
COMMIT WORK.
if not return is initial.
*return-TYPE
*ID
*NUMBER
*MESSAGE
message I000(000) with return-MESSAGE.
endif.
CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
Thanks and regards
-Senthil Bala
Message was edited by: senthil balaHi Senthil
Why at all U want a subroutine to create a record in IT0015 through Dynamic action.There are some standard codes available to update infotypes.
Let me give U an example
14 9CON BETRG 4 2 I INS,0015 This will create a record in IT0015 when IT0014 is updated with Wagetype 9CON
14 9CON BETRG 4 3 W P0015-LGART='5400' Set wagetype for IT0015(Here U can use a subroutine call to set the wagetype)
14 9CON BETRG 4 4 W P0015-BETRG=P0014-BETRG set amount for IT0015(Here U can use a subroutine call to get the amount)
14 9CON BETRG 4 5 W P0015-BEGDA=P0014-ENDDA set the dates(Here U can use a subroutine call to set the dates)
Hope this will help U.
Please award points if helpful -
Problem with a Link calling a dynamic page
Hi!
I wanted to create a link calling to a dynamic page. This dynamic page displays a PDF depending on the parameter, the thing here is that I don't know how to set the bind variables or more likely how to say that the value of those variables is going to come from the link in which the dynamic page it's been called.
I have my PL/SQL code where I have this bind variables
id_dep
id_tipo
and I went to the Customization Form Display Options button and there i made them public.
now on a page i created a link with the following structure, in order to call the dynamic page and send the parameters.
http://your.portal.com/portal/pls/portal/SCHEMA.DYN_YOUR_DYN_PAGE_NAME.show?p_arg_names=YOUR_PARAMETER_NAME&p_arg_values=YOUR_PARAMETER_VALUEso my links looks like this one:
http://desarrollo06:7778/pls/portal/TRANSPARENCIA.NOSEQUE.show?p_arg_names=idDep&p_arg_values=11&p_arg_names=idTipo&p_arg_values=25so I was told that I had to check that the parameters bindings are present or set, but I don't know how to do that... 'cause I thought I already did...
can youi help me?
thanks In Advance
aTTe
BlumeHi AMN,
well what I meant was that, see in the manage page for the Dyn Page there are some options bellow, in the one that sais Customize you can test the page, and I put there the values for id_dep and id_tipo as *11* and *25* then run the page and it opens the PDF but when I click on the link you suggested
http://desarrollo06:7778/portal/pls/portal/TRANSPARENCIA.NOSEQUE.show?p_arg_names=idDep&p_arg_values=*11*&p_arg_names=idTipo&p_arg_values=*25*
u_u but it doesn't open the PDF.
...The code I put in my last post is the code for my dyn page, and there's an if where if it doesn't find a file to deploy it show a message that sais "No hay Datos o No Aplica", so when I clic on the link it takes me to the dyn page but shows the message for no data found...
so I don't know what's going on.... if supposedly the dyn page is receiving the same values in different way, why it doesn't work with the link? -_- -
CRM5.2 UI-Call a dynamic URL on button click
Hi all,
My requirement is to call a dynamic url on the click of a button in the overview page. I have added a custom button in the method IF_BSP_WD_TOOLBAR_CALLBACK~GET_BUTTONS , and the related code in do_handle_event.I have created a custom method for the button event. I have enhanced a custom controller and created an attribute.In the custom method created for the button event, I have written the code for retrieving the parameters to be passed to the url.
In the layout of the view associated with the display view , I have written the following code for calling the URL in a new window.
<%
DATA: lr_cuco_EMA TYPE REF TO ZL_BP_CONT_BPCONT_IMPL,
lv_url TYPE string,
lv_url1 type string,
lv_count type i.
lr_cuco_EMA ?= controller->get_custom_controller( 'ZBP_CONT/BPCONT' ).
check lr_cuco_EMA is bound.
if lr_cuco_EMA->gv_VALUE is not initial.
if lr_cuco_EMA->gv_COUNT IS NOT INITIAL.
clear lr_cuco_EMA->gv_COUNT.
endif.
LV_URL = lr_cuco_EMA->gv_VALUE.
Concatenate 'http:/' LV_URL into LV_URL1.
Concatenate '"http:/' LV_URL '"' into LV_URL.
lv_count = lr_cuco_EMA->gv_COUNT mod '2'.
if lv_count Ne 0.
lv_url = lv_url1.
endif.
%>
<scrpt language="Javascript">
window.open(<%= lv_url%>).focus();
</script>
<%
lr_cuco_EMA->gv_COUNT = lr_cuco_EMA->gv_COUNT + 1.
clear lr_cuco_EMA->gv_value.
clear lv_count.
clear lv_url.
clear lv_url1.
ENDIF.
%>
But here my URl is getting called alternate times.If I do not write the code by using the variable GV_COUNT the url is getting called only the first time of the button click and to call the URL again you need to navigate back to the search page and again back to the overview page and click on the button.
Can anyone help me regarding this? I want the URL to be called in a new page on every button click.
Thanks in Advance,
ChandanaHi Nisha,
The crux of your issue here is that you want to call the event triggered with onClick before calling the event triggered on onClientClick. This can be achieved by the following code in the function called on the onClientClick.
function fn_button()
htmlbSL(this,2,'b_row_selection:onInputProcessing()');
window.open("new_page",target="BLANK");
Here, fn_button is the javascript function called on button click, and b_row_selection is the event triggered on the onClick event of row selection.
Try this out and let us know if it works for you.
Regards,
Saurabh -
Call Type node not setting Call Type Dynamically By name.
I'm attempting to use the Call Type node to set a Call Type dynamically by name using the following logic:
concatenate("somestring_",userParseFromVXML("CT"),"_Q")
The userParseFromVXML is a custom function that works correctly and pulls my data out of FromExtVXML correctly. If I use a peripheral variable and use the same logic then set the Call Type node to set the call type dynamically by name using the peripheral variable it sets the call type correctly without any problems. I'm using UCCE 9.0.3 and I'm wondering if anyone else has run across this issue.I wish I'd known about the table function before myself.
This is what my experience is now after having tested these scenarios.
Scenario
Example
PASS/FAIL
String literal
concatenate("somestring_", "test", "_Q")
PASS
Peripheral Variable
concatenate("somestring_", Call.PeripheralVariable1, "_Q")
PASS
Custom Function
concatenate("somestring_", userParseFromVXML("CT"), "_Q")
Passing now (not sure what i must have been missing)
The custom function I'm using returns a string and when I created a new custom function returning a String literal it worked just fine. After doing my testing and swapping back to my original custom function I started seeing the call tagged with the correct Call Type, so I can only assume that I was missing something in the original concatenate string. The custom function I am using is as follows:
if((find(%1%,Call.user.microapp.FromExtVXML[0]))>0,before(";",after(concatenate(%1%,"="),Call.user.microapp.FromExtVXML[0])),if((find(%1%,Call.user.microapp.FromExtVXML[1]))>0,before(";",after(concatenate(%1%,"="),Call.user.microapp.FromExtVXML[1])),if((find(%1%,Call.user.microapp.FromExtVXML[2]))>0,before(";",after(concatenate(%1%,"="),Call.user.microapp.FromExtVXML[2])),if((find(%1%,Call.user.microapp.FromExtVXML[3]))>0,before(";",after(concatenate(%1%,"="),Call.user.microapp.FromExtVXML[3])),"Not Found")))) -
Getting NLS setting issues when calling procedure
Hi,
Can anybody suggest me what could the problem in the below issue?.
i am invokeing procedure using DBAdapter. My soa version is 11.1.1.5. When i am calling procedure first time it is working fine. But when i am invoke second time
it is showing below error. I observed that i am getting error alternativly. So kinldy advice me what could be the issue.
Error:
Cause: java.sql.SQLException: ORA-20001: Oracle error -20001: ORA-20001: Oracle error -2074: ORA-02074: cannot SET NLS in a distributed transaction has been detected in fnd_global.set_nls.set_parameter('NLS_LANGUAGE','AMERICAN'). has been detected in fnd_global.set_nls. ORA-06512: at "APPS.APP_EXCEPTION", line 72 ORA-06512: at "APPS.FND_GLOBAL", line 240 ORA-06512: at "APPS.FND_GLOBAL", line 1410 ORA-06512: at "APPS.FND_GLOBAL", line 1655 ORA-06512: at "APPS.FND_GLOBAL", line 2171 ORA-06512: at "APPS.FND_GLOBAL", line 2313 ORA-06512: at "APPS.FND_GLOBAL", line 2251 ORA-06512: at
Regards,
AdhiHi:
Another way to avoid this, is to use an Non-XA Datasource.
Hope this helps
best -
Executing stored procedure dynamically
Hi Everybody,
I am trying to execute one procedure in other procedure dynamically. I am not sure, how to do this. Please provide your responses and comments.
Main Sp:
CREATE OR REPLACE PROCEDURE R2D2.SP_UPDATE (
V_ID IN RC_PENDING_TX.CS_ID%TYPE,
S_ID IN RC_PENDING_TX_STATUS_VL.STATUS_ID%TYPE,
A_ID IN VARCHAR2,
V_NOTES IN VARCHAR2
IS
v_date DATE := SYSDATE;
db_id varchar2(10);
stmt varchar2(10000);
stmt1 varchar2(10000);
BEGIN
db_ID := get_id(v_ID);
IF S_ID = 1
THEN
stmt:= 'begin utl_pkg.set_v_id@'||db_id||'('||V_ID||','||'1'||'); end;';
stmt1:= 'begin utl_pkg.set_t_id@'||db_id||'('||V_ID||','||'1,2,3,4'||','||'Y'||');end;';
execute immediate stmt;
execute immediate stmt1;
END IF;
END SP_UPDATE;
1) GET_ID IS function to get db_id for v_id.
2)utl_pkg.set_v_id,utl_pkg.set_t_id two sps i need to execute if s_id = 1.
3) I have to execute both sps utl_pkg.set_v_id, utl_pkg.set_t_id , which take v_id as input parameter from main sp and these sps will execute in db with db link db_id (which we get from function for v_id we pass in main sp).
Please let me know, how i can do this. DO i need to do it dynamically or i can do it in some ways.
Please help me guys. I will really appreciate it.
Thank you in advance.Try this.
Please see closely commas and parameter passed in procedures.
SQL> select name from v$database;
NAME
ORADB1
SQL> create or replace package UTL_PKG is
2 procedure set_v_id(v_id varchar2,any_value varchar2);
3
4 end UTL_PKG;
5 /
Package created.
SQL> create or replace package body UTL_PKG is
2
3 Procedure set_v_id( v_id varchar2,any_value varchar2 )is
4
5 begin
6
7 dbms_output.put_line('Package from remote DB'||v_id ||' '||any_value);
8
9 end;
10
11 end UTL_PKG;
12 /
Package body created.
SQL> Now on another DB
SQL> select name from v$database;
NAME
ORADB2
SQL> select db_link,host from all_db_links;
DB_LINK HOST
DB1_LINK ORADB1
SQL> CREATE OR REPLACE PROCEDURE SP_UPDATE (
2 V_ID IN emp.ename%TYPE, --This datatype is VARCAHR2
3 S_ID IN emp.empno%TYPE, --This datatype is NUMBER
4 A_ID IN VARCHAR2,
5 V_NOTES IN VARCHAR2
6 )
7 IS
8 v_date DATE := SYSDATE;
9 db_id varchar2(100);
10 stmt varchar2(1000);
11 BEGIN
12
13 select db_link into db_id from ALL_DB_LINKS -- Assuming only DB link is present
14
15
16 IF S_ID = 1 THEN
17
18 stmt:= 'begin utl_pkg.set_v_id@'||db_id||'('||''''||v_id||''''||','||'''1'''||'); end;';
19 dbms_output.put_line(stmt);
20 execute immediate stmt;
21 END IF;
22
23 END SP_UPDATE;
24 /
Procedure created.
SQL> show error;
No errors.
SQL> begin
2 SP_UPDATE('1',1,'a','sometext');
3 end;
4 /
begin utl_pkg.set_v_id@ORADB1('1','1'); end;
PL/SQL procedure successfully completed.
SQL> show error
No errors.
SQL> Edited by: Azhar Husain on Jun 10, 2011 1:16 PM
Maybe you are looking for
-
How can I improve the resolution of files? When clients upload files, they get a resolution warning for prints larger than 5x7. Never had this problem with Photoshop Elements. I have increased the file size to largest/100 on export.
-
Getting a rather nasty error in the log, and having a lot of trouble configuring web services, getting Wikis online, accessing the web calendar interface, and others, but they're probably not all related to this single error. In any event, has anyone
-
Trying to delete a user schema
Hello i want to delete a schema but if i try oracle say's no valid XDB-Document. How can i delete the schema? Bastian Fiebig (Beginning XDB Developer)
-
How to make a "floating" piano roll or "score" window?
didn't it used to be to hold down option key and scroll down window menu and you're good to go? (Logic 7) doesn't work on my computer... is there a preference? thanks!
-
Where can I get BusinessObjects.Enterprise.SDK?
I've been trying to get this to work for some time now. I have the following code trying to connect to an existing remote server (InsiteDev). SessionMgr session_mgr = new SessionMgr(); EnterpriseSession session = null; try session = session_mgr