Call Procedure from a Button
I am trying to call a procedure from a button that will work out the total of an order and display it in the total field in my master block.
I am unsure as to how to call the prodcedure from my button. I have written the procedure in the PL/SQL Stored Program Units part like it says in the help file but am now stuck.
I assume I use a WHEN-BUTTON-PRESSED trigger but what do I write in the trigger?
What about placing outputs from the procedure to fields on the form?
Here is the procedure I have created:
procedure vatTotal (Order_no IN number,Total2 OUT number)
AS
CURSOR c_vatTotal is
select order_line.quantity, gre_product.cost from ord, gre_product, order_line where ord.order_no = order_line.order_no AND
gre_product.prod_no = order_line.Product_no;
Total number;
begin
Total:= 0;
for c_record in c_vatTotal loop
Total := Total + c_record.quantity * c_record.cost;
end loop;
Total2 := Total;
end;
I believe this is correct. It compiles.
I tried using Total as an out parameter but received the "duplicate fields in RECORD, TABLE or argument list are not permitted" error.
Similar Messages
-
Calling a Procedure from a Button? (REVISITED)
Hi All,
I once asked a question Re: Calling a Procedure from a Button? & that problem was resolved when i was working on the online ApEx.
On my application, requirements have changed a bit: I have one form based on two tables. One table contributes two fields (name & surname) to the form while the remaining fields are contributed by another table to make a total of 17 fields on the form.
My process is in such a way that a user enters an id number & clicks Search button, if the apllicant exists then both name & surname corresponding with the id number will be retrieved from the database. If the applicant does not exist then an error message will be displayed inline with the id number field. Here's the PL/SQL anonymous block to that:
DECLARE
vNAME APPLICANTS.name%TYPE;
vSURNAME APPLICANTS.surname%TYPE;
BEGIN
SELECT count(*)
INTO :P2_COUNT
FROM applicants
WHERE id_number = :P2_ID_NUMBER;
IF :P2_COUNT > 0 THEN
SELECT name,surname
INTO vNAME, vSURNAME
FROM applicants
WHERE id_number = :P2_ID_NUMBER;
:P2_NAME := vNAME;
:P2_SURNAME := vSURNAME;
ELSE
apex_application.g_print_success_message := '<span style="color:red">Applicant does not exist.</span>';
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN
apex_application.g_print_success_message := '<span style="color:red">Exception Caught.</span>';
END;The PL/SQL block works except for error displaying part (but that's a problem for another day).
NB: On my application, there’s already Automated Row Fetch & Automatic Row Processing (DML) processes for one table. Furthermore, there is also a javascript for verifying the validity of an id number. As a result, I decided to include Automated Row Fetch & Automatic Row Processing (DML) processes for the other table. When I click a Search button the javascript is activated even though I did not specify a URL target for the button - because this is a simple button among region items – it does not have Optional Url Redirect section.
I'm not sure what I'm doing wrong here - any help is appreciated.
Regards
KamoHi Dan,
Sorry for causing confusion with my post - it's just that I was asking the same question (with different constraints) as I had asked before so I didn't feel like going to details was necessary because in my post I included a link to the previous thread. Interestingly, I was working on apex.oracle.com when I posted the original thread - the only problem came to be when I started to move the solution to my application on my machine.
Anyway, thanks for the response!
Regards
Kamo -
Calling a Procedure from a Button?
Hi All,
I'm using Oracle Application Express 11g & I'm currently working on an application. One of the requirements for this particular application is that a user has to be able to enter an applicant's id number (in the id textfield) & if a user clicks a button then they should be able to check in the db whether the applicant exists or not. If the applicant exists then name & surname textfields should be populated with values from the database corresponding to the id number & all these three textfields should be read only. If the applicant doesn't exist then the user will be directed to a page where he/she will fill in new applicant's details.
So, I wrote the following procedure to do that:
CREATE OR REPLACE PROCEDURE search_applicant(
P17_APPLICANT_IDNUMBER IN FIR_APPLICANT.applicant_idnumber%TYPE,
P17_NAME OUT FIR_APPLICANT.name%TYPE,
P17_SURNAME OUT FIR_APPLICANT.surname%TYPE,
P17_COUNT IN FIR_CURRENCY.currency_id%TYPE) IS
BEGIN
SELECT count(*)
INTO P17_COUNT
FROM fir_applicant
WHERE applicant_idnumber = :P17_APPLICANT_IDNUMBER;
IF P17_COUNT > 0 THEN
SELECT name,surname
INTO P17_NAME, P17_SURNAME
FROM fir_applicant
WHERE applicant_idnumber = :P17_APPLICANT_IDNUMBER;
dbms_output.put_line('Name: ' || P17_NAME || ' & Surname: ' || P17_SURNAME);
ELSE
dbms_output.put_line('Applicant does not exit.');
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Applicant does not exit.');
END;
So far I have not been able to find any help in this regard. I know how to invoke a javascript from a button but I'm not sure how to go about this one.
Any help in this regard is highly appreciated.
THANK YOU
KamoThanx PaulD & Chris,
Sorry for the delay in response - I couldn't implement the solutions you recommended for me. My ApEx instance is down (& has been for the past week). It finally dawned on me that I could recreate my problem @ apex.oracle.com. Please take a look at the following application & see if you can help:
http://apex.oracle.com/pls/otn/f?p=45267:2:714925804498386:::::
Username: Kamo
Password: admin
PS: I have tried to call a Procedure from a button using a page process but it still couldn't work.
THANK YOU!
Kamo
Edited by: user5429001 on 2009/01/28 6:10 AM
Edited by: user5429001 on 2009/01/28 6:21 AM -
Call vbscript from Apex button
I have added a vbscript to the header section of my page and I'm trying to call this from a button. Is this possible? Can anyone post an example of how this would be done. I've tried calling from the URL redirect section, along with many other things and can't get anything to work. I'm not sure if I added in the header wrong or if I'm calling it wrong.
ThanksWhat about placing outputs from the procedure to fields on the form?
Here is the procedure I have created:
procedure vatTotal (Order_no IN number,Total2 OUT number)
AS
CURSOR c_vatTotal is
select order_line.quantity, gre_product.cost from ord, gre_product, order_line where ord.order_no = order_line.order_no AND
gre_product.prod_no = order_line.Product_no;
Total number;
begin
Total:= 0;
for c_record in c_vatTotal loop
Total := Total + c_record.quantity * c_record.cost;
end loop;
Total2 := Total;
end;
I believe this is correct. It compiles.
I tried using Total as an out parameter but received the "duplicate fields in RECORD, TABLE or argument list are not permitted" error. -
Is possible to call procedure from vorowimpl class
Hi,
please tell me how to call procedure from vorowimpl class.
Thanks in advance,
SANHi cruz,
Thanks for your reply.
I checked that link and they given for controller.
But i want to call that from the vorowimpl class. but i tried similar like calling in the controller.
here my code, please correct it if it is mistake.
public AssessmentsAMImpl xxam;
public String getXXCompName() {
//return (String) getAttributeInternal(XXCOMPNAME);
OADBTransaction txn=(OADBTransaction)xxam.getDBTransaction();
String compName=getCompName();
String xxName="";
CallableStatement cs=txn.createCallableStatement("DECLARE OUTPARAM VARCHAR2(100);begin apps.XX_COMP_ELEMENTSVO_PROC(:1,:2);end;",0);
try{
cs.setString(1,compName);
cs.registerOutParameter(2,OracleTypes.VARCHAR,0);
cs.execute();
xxName=cs.getString(1);
catch(Exception e){
try{
cs.close();
catch(Exception e){
return xxName;
} -
Error when calling procedure from form personalization
Hi every body
I want to call a procudre using form personalization . I made the procedure and in form personalization i call it as follow:
built in type : Execute a Procedure
Argument :
='GAZ_EMP_ASSIGN_UPDATE(' || :ASSGT.ORGANIZATION_ID || ', ' || :ASSGT.ASSIGNMENT_ID || ', ' || FND_PROFILE.VALUE('USER_ID') || ', ' || FND_PROFILE.VALUE('DB_SESSION_ID') ||' )'
but the following error raised when i click on Apply Now button :
the string (='GAZ_EMP_ASSIGN_UPDATE(' || :ASSGT.ORGANIZATION_ID || ', ' || :ASSGT.ASSIGNMENT_ID || ', ' || FND_PROFILE.VALUE('USER_ID') || ', ' || FND_PROFILE.VALUE('DB_SESSION_ID') ||' )' )
couldn't be evaluated because of error ORA-06550 :line 1 , column 43
PLS-00103:encountered the symbol ")" while expecting one of the folowing (- + ...... etc
can anyone have a solution to this problem because it made me mad .(urgent)
Or if anyone have another way to call the procedure ??
Note that i want to pass db_session_id to the procedure from the application so does anyone have a complian about the way of passing this parameter to the procedure ??See http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/forms-personalization-execute-a-procedure-1778674
-
Problem with IN OUT parameters whiloe calling procedure from Form 6i
Hi
Could some help please? I have the following scenario.
I am calling a stored procedure from form 6i by pressing a button on the form. Procedure has two IN OUT parameters, and I am passing these two IN OUT parameters and have declared them the way they are declared passed to the procedure. But I get an error when calling that procedure with these IN OUT parameters. the procedure works fine if parameters are IN only. The error says:
PLS:00363: Expression '1' cannot be used as an assigment target.
NO matter I pass some value or leave it blank, I get the same error message persistenetly.
Please help.
Thanksmake sure you are calling your procedure with variables as parameters,
i.e.
l_v1 := 1 ;
l_v2 := 'hello world' ;
your_proc(l_v1, l_v2)
not
your_proc(1,'hello world') -
Performance differce calling Procedure from sqlplus and Java
Hi ,
I have one procedure which is called from java application and its called only once from java and the entire process is running from procedure itself.Once its called there is no dependency from java to PL/SQL.Its taking long time from java.But if I execute the same procedure from SQL plus then its running in seconds.Also only one session is running in entire database.
My Oracle version 11g.
Please guide me if you get some thing based on below session event.
This is the session status for running from SQL plus
SID EVENT TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED WAIT_CLASS
2191 SQL*Net message from client 954 0 1319633 Idle
2191 direct path read 860 0 702 User I/O
2191 db file sequential read 2605 0 550 User I/O
2191 SQL*Net break/reset to client 24 0 460 Application
2191 SQL*Net more data from client 3 0 159 Network
2191 direct path write temp 214 0 74 User I/O
2191 direct path read temp 314 0 67 User I/O
2191 db file scattered read 78 0 42 User I/O
2191 db file parallel read 71 0 21 User I/O
2191 log file sync 36 0 12 Commit
2191 SQL*Net message to client 955 0 0 Network
2191 Disk file operations I/O 8 0 0 User I/O
2191 events in waitclass Other 15 7 0 Other
This is the session status for running from Java
SID EVENT TOTAL_WAITS TIME_WAITED WAIT_CLASS
1718 SQL*Net message from client 21208 7046039 Idle
1718 direct path read 2742 2327 User I/O
1718 log file sync 3748 1121 Commit
1718 db file sequential read 1533 1082 User I/O
1718 enq: TX - row lock contention 6 423 Application
1718 buffer busy waits 1 100 Concurrency
1718 log buffer space 1 30 Configuration
1718 direct path write temp 92 21 User I/O
1718 direct path read temp 138 16 User I/O
1718 log file switch (private strand flush incomplete) 6 16 Configuration
1718 SQL*Net message to client 21209 2 Network
1718 db file scattered read 2 1 User I/O
1718 SQL*Net more data from client 17 0 Network
1718 Disk file operations I/O 11 0 User I/O
1718 SQL*Net more data to client 1 0 Network
1718 events in waitclass Other 15 0 Other
Sorry I am not able to paste in proper alignment for my plain text.Hi,
you need to find which SQL is running slower, using some tools as dbms_profiler, dbms_hprof, ASH, extended SQL trace and real-time SQL monitor (caution: some of the tools may require Diagnostic Pack License).
Then you need to pinpoint difference in the plans and understand its origin -- post plans here if you need help with that (use tags to preserve formatting).
Best regards,
Nikolay -
Getting error while calling procedure from remote database
When I am trying to call child procedure from remote database I am getting below error:
ORA-02064: distributed operation not supported
ORA-06512: at "NMUSER.NEW_CUST_UPLOAD", line 740
(P.S. on line no 740 I issued "commit;" )
I checked rights,synonym on all the objects they are fine.Oracle Error: ORA-02064
Error Description:
Distributed operation
not supported
Error Cause:
One of the following
unsupported operations was attempted:
1. array execute of a remote update with a subquery that references a dblink,
or
2. an update of a long column with bind variable and an update of a second
column with a subquery that both references a dblink and a bind variable, or
3. a commit is issued in a coordinated session from an RPC procedure call
with OUT parameters or function call.
Cheers,
Manik. -
Calling report from a button based on parameters
Hi,
I want to call a report from a custom button based on some parameters. Suppose
I have a form based on dept table and I have created a custom button which
should take the value of the selected deptno and pass as a parameter to the
report to get all the info from the emp table against that deptno.
ThanksReport:
You need to create a SQL report with a bind variable. Then you can take a look at the call interface from the "Manage" Screen of your report to find out how to pass parameters to it.
Form:
To get the required value from the form, make use of p_session in the Custom PL/SQL handler code, then form the URL of the report and call it using <portal_schema>.wwa_app_module.set_target. Take a look at this post: Problems installing 9iAS 9.0.3 -
'ORA-12571: TNS:packet writer failure' error while calling procedure from VC++
hi all,
i am writing stored procedures and calling these from vc++. I have one stored procedure in that all
in and out perameters are numeric. When i am calling these procedure i am able to get the values properly. But in another procedure one in perameter is varchar and one out perameter is varchar. When i am calling these procedure from vc++ the error i am getting is "ORA-12571: TNS:packet writer failure". I test my vc++ code on different computers but its giving the same errors. I think ora-12571 error is when i can't communicate with oracle. But other stored procedures(in and out perameters are numbers) and sql statements are running properly. Only these stored procedure which has in and out perameters as varchar is giving me the above said problem. My out perameter in this procedure strtax is of type varchar and the length 100. Is it the problem. Please suggest me how to over come this problem.
thanks in advance,
with regards
vali.Hi
We recently changed our load balancer to a new load balancer. we get this error only after the load balancer change.
When the error occurs, I could see ORA-12571 error message only in the application error log. The listener.log has only the following message about TNS 12502. It does not have any message about ORA -12571.
TNS-12502: TNS:listener received no CONNECT_DATA from client
12-MAR-2010 12:23:26 * (CONNECT_DATA=(SERVICE_NAME=AppName)(CID=(PROGRAM=c:\wind ows\system32\inetsrv\w3wp.exe)(HOST=WEB02)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.x.x.x.x)(PORT=2202)) * establish * AppName * 0
12-MAR-2010 12:23:26 * (CONNECT_DATA=(SERVICE_NAME=AppName)(CID=(PROGRAM=c:\wind ows\system32\inetsrv\w3wp.exe)(HOST=WEB02)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.x.x.x.x)(PORT=2203)) * establish * AppName * 0
12-MAR-2010 12:23:26 * (CONNECT_DATA=(SERVICE_NAME=AppName)(CID=(PROGRAM=c:\wind ows\system32\inetsrv\w3wp.exe)(HOST=WEB02)(USER=NETWORK?SERVICE))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.x.x.x.x)(PORT=2204)) * establish * AppName * 0
12-MAR-2010 12:24:09 * 12502
TNS-12502: TNS:listener received no CONNECT_DATA from client
Thanks
Ashok -
ORA-12571: TNS:packet writer failure while calling procedure from VC++
hi all,
i am writing stored procedures and calling these from vc++. I have one stored procedure in that all
in and out perameters are numeric. When i am calling these procedure i am able to get the values properly. But in another procedure one in perameter is varchar and one out perameter is varchar. When i am calling these procedure from vc++ the error i am getting is "ORA-12571: TNS:packet writer failure". I test my vc++ code on different computers but its giving the same errors. I think ora-12571 error is when i can't communicate with oracle. But other stored procedures(in and out perameters are numbers) and sql statements are running properly. Only these stored procedure which has in and out perameters as varchar is giving me the above said problem. My out perameter in this procedure strtax is of type varchar and the length 100. Is it the problem. Please suggest me how to over come this problem.
thanks in advance,
with regards
vali.hi,
thanks for reply,
I wanna let u know that this is my personal lappy & i have installed apps dump on it in Linux & connect it through VM player in Window environment. I have recently purchased a new Antivirus K7 & installed it on my Lappy. i wanna know does this impact your application or Dbase Bcoz the application is running fine after starting the services in linux.
The only thing is that i am not able access the database through TOAD or SQL*Plus. the same error i am facing in both.
So
shud i uninstall the antivirus on this And this is the only solution to it ?
If yes, then how do i fix it again when i'll reinstall it Bcoz i need Antivirus as well.
kindly suggest.
thanks
D -
Call procedure from another procedure
Hi All,
I have a requirement to call a procedure from another procedure and don't want to return to the main procedure again.please suggest me how to achive this .
thanksuser13424229 wrote:
I have a requirement to call a procedure from another procedure and don't want to return to the main procedure again.please suggest me how to achive this .A very strange requirement.. that perhaps you should expand on in order to get proper technical input and advice from forum members.
Assuming a valid requirement, it should be implemented in the following way:
SQL> create or replace procedure ProcB is
2 begin
3 DBMS_OUTPUT.put_line( 'ProcB(): executing...' );
4 end;
5 /
Procedure created.
SQL>
SQL>
SQL>
SQL> create or replace procedure ProcA is
2 E_CEASE_PROCESSING exception;
3 pragma exception_init(E_CEASE_PROCESSING, -20000 );
4 begin
5 DBMS_OUTPUT.put_line( 'ProcA(): executing...' );
6 DBMS_OUTPUT.put_line( 'ProcA(): doing stuff 1...' );
7 raise E_CEASE_PROCESSING; --// typically a conditional instruction
8 DBMS_OUTPUT.put_line( 'ProcA(): doing stuff 2...' );
9
10 exception when E_CEASE_PROCESSING then
11 ProcB;
12 end;
13 /
Procedure created.
SQL>
SQL>
SQL> exec ProcA
ProcA(): executing...
ProcA(): doing stuff 1...
ProcB(): executing...
PL/SQL procedure successfully completed.
SQL> -
PLS HELP - Column value missing when calling procedure from Oracle OLEDB provider
When calling procedure 'sp_a(?,?,?)' from SQL_PLUS and using
DBMS.OUTPUT to print the result
It returns a result set as
C0, C1, C2
But When I call the same procedure 'sp_a(?,?,?)' with same
parameter value from MS VB6,
It returns the a result set as
C0, Null,C2
The 2nd value became Null.
Any ideas?
Please Help.See http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/forms-personalization-execute-a-procedure-1778674
-
Calling procedures from table and apex
Hi
I have a stored procedures and I want to put my stored procedures in table and I want to call store procedure from table in apex. how can I do this?
For example
I have stored procedures like Students(year number,birimno number)
GPA(birimno number,studentno number ) Student Procedure and GPA proecdure retrieve name and lastname
and I want to create a table
table has
Id Package Procedurename Arguments Header
1 GPA birimno, studentno name, lastname
2 Students year, birimno name,lastnameSo how can I do like this ? I want to call storeprocedures on APEX with selectlist. Selectlist will has a storeprocedures .
Edited by: esra aktas on 06.May.2011 01:48
Edited by: esra aktas on 06.May.2011 01:48
Edited by: esra aktas on 06.May.2011 04:08I am beginner pl/sql .
I had searched execute immediate for helping my problem.
My purpose is that I want to collect all of procedures in one table. And I must retrived which I select procedure on APEX Selectlist.
So I started to create a table which name is procedures and I put my procedures names on it.
Now how can I execute to procedures that name is in table?
create or replace
procedure "ISINIF_BASARI"(normalyariyil number,birimno number )
IS
ogrenci_no VARCHAR2(12);
ders_kodu VARCHAR2(12);
ders_adi VARCHAR2(50);
harf_kodu VARCHAR2(4);
CURSOR c_basari IS
select dk.ogrenci_no,da.ders_kodu,da.ders_adi,dk.harf_kodu
into ogrenci_no,ders_kodu,ders_adi,harf_kodu
from ders_aktif da,ders_tanim dt, ders_kayit dk
where da.ders_kodu like birimno ||'%'
and (dt.normal_yariyili=normalyariyil
OR dt.normal_yariyili=normalyariyil+1)
and (da.acildigi_donem='1' or da.acildigi_donem='2')
and dt.ders_kodu = da.ders_kodu
and dk.acilan_ders_no = da.acilan_ders_no
BEGIN
FOR I IN c_basari LOOP
dbms_output.put_line(' OGRENCI NO '||I.OGRENCI_NO||' DERS KODU '|| I.DERS_KODU||' DERS ADI '||I.DERS_ADI||' HARF KODU '||I.HARF_KODU);
end loop;
end;I have procedure like that.
and I have a procedures table. And I put the procedure's name in table.
procedure
id procname
1 ISINIF_BASARI
Now I want to call procedure using this table .
When I call yhe procedures from table I wrote like this. But it has faults.
create or replace
PROCEDURE CALLSPFROMTABLE as
v_sql_exp VARCHAR2(100);
BEGIN
v_sql_exp :='begin'||'select p.procname from procedure p where id=1'||'end;';
end;Edited by: esra aktas on 07.May.2011 02:19
Maybe you are looking for
-
Can you lock a pdf file?
Hi all! I have a client who has created a pdf booklet. It's a form that people will be filling out. She wants to distribute it on a CD. So... people will have to be able to copy it to their computer to open and fill it in. However, she then wants the
-
iam trying to buy OS Lion to my Imac but i can not buy because its saying Mac OSX 10.7 requires at least 2 GB of memomie and mine has 1 GB what can i do?
-
Re: Need info about chipset model for Satellite C50-A-14W
Hello I need a model of the chipset for this model I can not find this information anywhere CPU: celeron 1005m need help Satellite C50-A-14W part number pscg8e-039009pl
-
i get this in do a disk repair Acl Found but not expected on Flashplayer.xpt and then i go to that folder and remove it and safari work just fine but i need flash to view some sites plz help
-
Month/year input field in selection screen
Hi, Can anyone tell how to declare an input field in selection screen in the format month/year with out day. Thanks. Prasad.