Plsql procedure help..
Hi There,
We're developing a procedure that takes a string, a delimiter, assign the individual tokens to variables, and return the variables to the calling program.
Since I'm new to pl/sql, I'm not quite sure how to do the last bit (assign the tokens to the variables and return them to the calling program), and we we're looking at some help please. In other words, I have a loop, fetch a cursor into variable.. and we're wondering how can we assign the 1st value of the cursor to the 1st defined OUT variable in the procedure heading (the 2nd cursor value to the 2nd OUT variable, ..etc)?
Here is the code:
procedure string_to_tokens (in_str IN varchar2,
delim IN varchar2,
VENDOR_ID OUT number,
CCF_ID OUT number,
PRR_ID OUT number,
CON_NAME OUT VARCHAR2,
CONT_TYPE_ID OUT number,
DEPOSIT_DATE OUT VARCHAR2,
CON_YEAR OUT VARCHAR2,
CHG_NAME OUT VARCHAR2,
CON_AMOUNT OUT number,
TOT_AMOUNT OUT number)
is
mystring varchar2(100);
cursor str_cur is
SELECT
SUBSTR
( in_str
, DECODE(LEVEL, 1, 1, INSTR(in_str, delim, 1, LEVEL-1)+1)
, INSTR(in_str, delim, 1, LEVEL) -
DECODE(LEVEL, 1, 1, INSTR(in_str, delim, 1, LEVEL-1)+1)
FROM DUAL
CONNECT BY INSTR(in_str, delim, 1, LEVEL)>0
ORDER BY LEVEL ASC;
begin
open str_cur;
loop
fetch str_cur into mystring;
exit when str_cur%NOTFOUND;
dbms_output.put_line ('mystring is '||mystring);
end loop;
close str_cur;
end string_to_tokens;a sample input string would be:
'22|||1334502 RegXL Ltd|18|10032011|2011|John Joe|2000.00|2000.00'The delimiter would be '|'.
Thanks in advance for your help.
Thanks
Edited by: rsar001 on Oct 26, 2011 7:39 AM
Edited by: rsar001 on Oct 26, 2011 7:40 AM
Hi,
You can do something like this:
CREATE OR REPLACE procedure string_to_tokens
( in_str IN varchar2,
delim IN varchar2,
VENDOR_ID OUT number,
CCF_ID OUT number,
PRR_ID OUT number,
CON_NAME OUT VARCHAR2,
CONT_TYPE_ID OUT number,
DEPOSIT_DATE OUT VARCHAR2,
CON_YEAR OUT VARCHAR2,
CHG_NAME OUT VARCHAR2,
CON_AMOUNT OUT number,
TOT_AMOUNT OUT number,
encloser IN VARCHAR2 := '"' -- new argument added
is
mystring VARCHAR2 (32767) := in_str || delim; -- Remining text to process
sub_str VARCHAR2 (32767); -- Nth delimited item
loop_cntr PLS_INTEGER := 0;
delimiter_pos PLS_INTEGER := -1; -- position of 1st delimiter in remaining text
begin
WHILE delimiter_pos != 0
AND loop_cntr <= 10
LOOP
loop_cntr := loop_cntr + 1;
IF SUBSTR (mystring, 1, 1) = encloser -- Changes start here
THEN -- Next token is enclosed; next token ends with encloser
delimiter_pos := INSTR (mystring, encloser, 2);
sub_str := SUBSTR ( mystring
, 2
, delimiter_pos - 2
mystring := SUBSTR ( mystring
, delimiter_pos + 2
ELSE -- Usual situation: next token ends with delim
delimiter_pos := INSTR (mystring, delim);
sub_str := SUBSTR ( mystring
, 1
, delimiter_pos - 1
mystring := SUBSTR ( mystring
, delimiter_pos + 1
END IF;
IF delimiter_pos > 0
THEN
-- Changes end here
IF loop_cntr = 1
THEN
vendor_id := TO_NUMBER (sub_str);
ELSIF loop_cntr = 2
THEN
ccf_id := TO_NUMBER (sub_str);
ELSIF loop_cntr = 3
THEN
prr_id := TO_NUMBER (sub_str);
ELSIF loop_cntr = 4
THEN
con_name := sub_str;
ELSIF loop_cntr = 5
THEN
cont_type_id := TO_NUMBER (sub_str);
ELSIF loop_cntr = 6
THEN
deposit_date := TO_NUMBER (sub_str); -- Should this be a DATE, rather than a NUMBER?
ELSIF loop_cntr = 7
THEN
con_year := sub_str;
ELSIF loop_cntr = 8
THEN
chg_name := sub_str;
ELSIF loop_cntr = 9
THEN
con_amount := TO_NUMBER (sub_str);
ELSIF loop_cntr = 10
THEN
tot_amount := TO_NUMBER (sub_str);
END IF;
END IF;
END LOOP;
end string_to_tokens;
{code}
I added an optional argument after tot_amount, and changed a few lines of code at the beginning of the loop. The rest of the procedure is unchanged.
Similar Messages
-
Help Required :Excel Upload Into Oracle Table Using PLSQL Procedure/Package
Please Help , Urgent Help Needed.
Requirement is to Upload Excel file Into Oracle Table Using PLSQL Procedure/Package.
Case's are :
1. Excel File is On Users/ Client PC.
2. Application is on Remote Server(Oracle Forms D2k).
3. User Is Using Application Using Terminal Server LogIn.
4. So If User Will Use to GET_FILE_NAME() function of D2K to Get Excel File , D2k Will Try to pick File from That Remote Server(Bcs User Logind from Terminal Server Option).
5. Cannot Use Util_File Package Or Oracle Directory to Place That File on Server.
6. we are Using Oracle 8.7
So Need Some PL/SQL Package or Fuction/ Procedure to Upload Excel file on User's Pc to Oracle Table.
Please Guide me wd some Code. or with Some Pl/SQL Package, or With SOme Hint. Or any Link ....
Jus help to Sort This Issue ........
you can also write me on :
[email protected], [email protected]I also Tried to Use This
But How can i Use SQLLDR Command In Stored Procedure.
Well IN SQL*PlUS it is successfull but in Stored Procedure /Package ,PL/SQL does not recognise the OS commands.
So now my Question How can I recognise the SQLLDR Commnad in Stored Procedure. -
Help Required:How Upload Excel file Into Oracle Table Using PLSQL Procedure
Please Help , Urgent Help Needed.
Requirement is to Upload Excel file Into Oracle Table Using PLSQL Procedure/Package.
Case's are :
1. Excel File is On Users/ Client PC.
2. Application is on Remote Server(Oracle Forms D2k).
3. User Is Using Application Using Terminal Server LogIn.
4. So If User Will Use to GET_FILE_NAME() function of D2K to Get Excel File , D2k Will Try to pick File from That Remote Server(Bcs User Logind from Terminal Server Option).
5. Cannot Use Util_File Package Or Oracle Directory to Place That File on Server.
6. we are Using Oracle 8.7
So Need Some PL/SQL Package or Fuction/ Procedure to Upload Excel file on User's Pc to Oracle Table.
Please Guide me wd some Code. or with Some Pl/SQL Package, or With SOme Hint. Or any Link ....
Jus help to Sort This Issue ........
you can also write me on :
[email protected], [email protected]TEXT_IO is a PL/SQL package available only in Forms (you'll want to post in the Forms forum for more information). It is not available in a stored procedure in the database (where the equivalent package is UTL_FILE).
If the Terminal Server machine and the database machine do not have access to the file system on the client machine, no application running on either machine will have access to the file. Barring exceptional setups (like the FTP server on the client machine), your applications are not going to have more access to the client machine than the operating system does.
If you map the client drives from the Terminal Server box, there is the potential for your Forms application to access those files. If you want the files to be accessible to a stored procedure in the database, you'll need to move the files somewhere the database can access them.
Justin -
Help with truncating a table using plsql procedure in different schema
I have a plsql procedure in schema A that truncates a table that is given in as parameter.
create or replace procedure truncate_table(schema, table_name)
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||schema||'.'||table_name;
end;
The above procedure has public execute grant.
I need to truncate a table in schema B. I have a plsql procedure in schema B that calls the truncate_table procedure and passes in the schema B table name.
Since the table is in schema B, should the delete grant on the table be given to user A or user B to truncate the table in schema B?
Thanks in advance.Procedure created in schema A
create or replace
procedure truncate_table(l_schema varchar2, table_name varchar2) authid current_user
as
begin
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||l_schema||'.'||table_name;
end;from schema B
grant delete on table1 to Schema_A
from schema A
exec truncate_table('Schema_B','Table1');
Hope this helps.
Alvinder -
Executing sql from table with in plsql procedure
I wonder if anyone can help.
I have a table that stores sql statements. They are actually a set of rules that I want to apply to my application. My intention is to execute the statement in plsql.
EG a sql statment held in the table might be:
'select count(id) from item where item_id = ' || constants_pkg.c_test_item || ' and client_id = ' || client_id_in
I am trying to call this from a plsql procedure, Ive CUT OUT some of the procedure task_rec.rule holds the statement above. The procedure is failing invalid SQL statement, I think the client_id_in may not be evaluating as the variable, passed into the procedure and constants_pkg.c_test_item not being taken from the constants pkg.
EG.
PROCEDURE create_additional_info_list(
client_id_in IN client.id%TYPE,
IS
result VARCHAR2(100);
BEGIN
EXECUTE IMMEDIATE
task_rec.rule
INTO result;
END;
If I was to do below the code would work ok. However I require the rule to come from the table.
EXECUTE IMMEDIATE
'select count(id) from item where item_id = ' || constants_pkg.c_test_item || ' and client_id = ' || client_id_in
INTO result;
Is there anyway constants_pkg.c_test_item and client_id_in can be evaluated as variables?Not that I've tried this but, if possible, change the SQL in the table to have bind variable; e.g.,
'select count(id) from item where item_id = :1 and client_id = :2 ';
Then in the procedure
execute immediate task
INTO result
USING constants_pkg.c_test_item ,
client_id_in ; -
Calling PLSQL Procedure with CLOB input parameter from JDBC
Hi..
I've got a PLSQL procedure with a CLOB object as input parameter:
function saveProject (xmldoc CLOB) RETURN varchar IS
I want to call that procedure from my JDBC Application as...
String data = "..."
CallableStatement proc = conn.prepareCall
("begin ? := saveProject (?); end;");
neither
proc.setCharacterStream(2, new StringReader(data, data.length());
nor
proc.setString(2, data);
will work.
The Application throws java.sql.Exception: ... PLS-00306 wrong
number or types of arguments in call 'SAVEPROJECT'
How can I use set setClob method?
The Problem is: with Oracles CLOB implementation I can't create
an Instance, and from the CallableStatement a can't get a
Locator for a CLOB-Object.
This CLOB stuff makes me really nuts!
please somebody help me.. thanks
AlexHi All,
You can not make it like that.
You can not make clob as input parameter.
Do you want an easy way?
This is the easy way.
sample:
function myFunction(S varchar2(40))
return integer as
begin
insert into TableAAA values(S)
--TableAAA only contains 1 column of clob type
end;
This will work the problem with this is the parameter is in
varchar2 right? so there will be limited length for it.
You can do this to call that function:
nyFunction('My String that will be input into clob field');
There's another slight difficult way, I understand that you have
installed Oracle client/server in your system, try to look at
jdbc folder and try to find demo.zip in that folder, you can
find several ways of doing thing with jdbc.
Have a nice day,
Evan -
Plsql procedure containing select statement to fill page items
I would like to fill items :P200_A and :P200_B and so on
with the result of a SELECT which depends on the different values of many select lists.
E.G. :P200_list_alpha with the list of values
STATIC:less than 10;less,equal than 10;equal,above 10;above,indifferent;indiff
:P200_list_beta with the list of values
STATIC:active;active,passiv;passiv,excluded;excluded
How do I write the select statement ? I think it has to be executed in an anonymous PLSQL Procedure (after submit).
What is a convenient way to write the select statement ?
I could imagine to use lots of IF , ELSIF, ELSE statements and in each branch (here 12 ) the whole/complet SELECT statement is written.
How to solve this problem in an elegant way ?
In my opinion the CASE statement could be helpful, but how to use it in the WHERE clause with this nested conditions ?I think I got it:
SELECT col1, col2, col3, ...
INTO :P200_A , :P200_B , ....
FROM mytable_1, mytable_2
WHERE mytable_1.col1 = mytable_2.col1
AND (
CASE
WHEN :P200_LIST_ALPHA = 'less' AND NVL(TO_COL_WITH_ALPHA, 0) < 10 THEN 1
WHEN :P200_LIST_ALPHA = 'equal' AND NVL(TO_COL_WITH_ALPHA, 0) = 10 THEN 1
WHEN :P200_LIST_ALPHA = 'above' AND NVL(TO_COL_WITH_ALPHA, 0) > 10 THEN 1
WHEN :P200_LIST_ALPHA = 'indiff' THEN 1
ELSE 0
END = 1 )
AND
( CASE
WHEN :P200_LIST_BETA = 'active' AND TO_COL_WITH_BETA IN ( 'a', 'A', 'akt', 'AKT' ) THEN 1
WHEN :P200_LIST_BETA = 'passive' AND TO_COL_WITH_BETA IN ( 'p', 'P' ) THEN 1
WHEN :P200_LIST_BETA = 'excluded' AND TO_COL_WITH_BETA = 'X' THEN 1
ELSE 0
END = 1 )
;Edited by: wucis on Oct 24, 2011 4:09 PM -
Plsql procedure with sql query data
plsql newbie(learning sql): please excuse for asking a basic plsql question
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod on windows server 2003
PL/SQL Release 10.2.0.1.0 - Production
"CORE 10.2.0.1.0 Production"
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
CREATE OR REPLACE PROCEDURE p_check
AS
v1 NUMBER(20,0);
BEGIN
SELECT count(*) INTO v1
FROM ad_reg;
dbms_output.put_line(v1);
end;
inserts the number of rows in the table ad_reg into v1
and displays v1 by using dbms_output
i want my procedure to return table data
CREATE TABLE "TEST_SH"
"TEXT_ID" NUMBER,
"TEXT" CLOB
Insert into TEST_SH (TEXT_ID) values (1);
Insert into TEST_SH (TEXT_ID) values (2);
Insert into TEST_SH (TEXT_ID) values (3);
Insert into TEST_SH (TEXT_ID) values (4);
there will be a way with which i can see all the data(select * from test_sh) as the output of the plsql procedure
1.please tel me what to google
2.please guide me with a site or tell what is actually used and help me
3.or post an example here
thank you much
Edited by: 946207 on Nov 20, 2012 2:05 PM946207 wrote:
there will be a way with which i can see all the data(select * from test_sh) as the output of the plsql procedurePL/SQL is
a) nothing at all like T-SQL
b) two different languages, PL (Programming Logic) and SQL
SQL is used to access data in the Oracle database. So select * from test_sh is the correct statement to access the data.
The client can make execute this SQL statement itself. And view the data. However, this requires the client to understand the SQL language, and the database model. Which is typically not that you want. You want to abstract that from the client.
Why would you want the client to deal with the complexities of the SQL language? Or deal with the complexities of your database model in Oracle?
So instead of the client doing SQL, PL/SQL can do it on behalf of the client. The client uses PL/SQL as an API - in a similar fashion as the client would use any other API.
The PL/SQL code determines the SQL statement - and returns a SQL cursor handle to the client. The client then simply uses the SQL cursor that the PL/SQL code created for it (and the client needs to close the SQL cursor when done, so as to not cause server resource leakage).
E.g. (using PL/SQL as an API to abstract SQL and the data model)
create or replace procedure TestProc( c out sys_refcursor ) is
begin
open c for select * from test_sh order by 1;
end;The client then calls TestProc and gets a reference cursor handle. E.g. (the client call to Oracle):
begin
TestProc( c => :1 );
end;The client needs to supply a host (client language) bind variable of type cursor, as value for bind variable +:1+.
This is the correct way to deal with PL/SQL and cursors from a client GUI/language perspective. Any other method, like using PL/SQL to cache SQL data as a collection, is usually very wrong. -
User defined error handling in PLSQL procedure of portal form
I need some help of building a user defined exception handling in PLSQL.
I build a portal form based on a PLSQL procedure.
In this procedure there are several SQL statements with exception handling.
In case of exception I want to display my on error message and than raise the procedure, so that the user can read the message and than go back to form.
I try this by calling a raise statement generating some HTML output over htp.p() but than the output look's like
SQL:
begin
"ACHEMA2003"."P_LOGIN" ( P_STAMM_SEQ => 33491, P_ADRESSNR => 2009721, P_PASSWORD => '3333', P_PROJEKT_ID => 'ACHEMA2003', P_MESSENR => '00023', P_SPKZ => 'D');
end;
ORA-20000:
Login ACHEMA 2003
Ung|ltiges Passwort !!!
Back to form
I want to supress the standard Oracle messages.
Now I read about the packages wwerr_api_error and wwerr_api_error_ui to make this, but it seems to be a little difficult.
Is there anybody who have a solution for this problem, perhaps some example PLSQL code for this.
Thanks Erwin.Jacob,
Try following:
declare
v_sender VARCHAR2(1000);
v_sender_id NUMBER;
begin
v_sender := p_session.get_value_as_VARCHAR2(
p_block_name => 'DEFAULT',
p_attribute_name => 'A_SENDER');
v_sender_id := p_session.get_value_as_NUMBER(
p_block_name => 'DEFAULT',
p_attribute_name => 'A_SENDER_ID');
insert into hd (number, text) values (hd_seq.nextval,
'step 3 v_sender = ' || v_sender ||
' v_sender_id = ' || v_sender_id);
if v_sender_id >= 100 then
p_session.set_value(
p_block_name => "_block",
p_attribute_name => '_STATUS',
p_value => 'Sender ID must be less than 100!');
-- return to your form with status message set
-- and all fields filled with recent values
return;
end if;
end;
-- This point is reached only if validation is OK
doInsert;
Regards,
Henn -
Html forms in plsql procedure prob
Hi,
i have created a plsql procedure and have included a javascript part in order to link two drop down menus in a web site. but even though when you select a category at the first drop down menu it successfully updates the options at the second, the Action of the form doesnt work (the parameter doesnt pass to the procedure they should according to the Action command. If i don't use the first drop down menu though and add few options at the second, the Action works fine...can u please help me???
This is the code after the java script part...
htp.print('<FORM NAME="select_mem" ACTION="'||f_host||'search" METHOD="post">');
htp.print('<SELECT name="Category" onChange="updateList(this.form, this.options[selectedIndex].value, this.form.Subject.length)" >');
for sel_t in ctype loop
htp.print('<option value="'||replace(sel_t.mem_type,' ','_')'">'||sel_t.mem_type||'</option>');
end loop;
htp.print('</SELECT>');
htp.print('<br>');
htp.print('<select name="Subject" id="Subject" >');
htp.print('<option value="None" SELECTED>- Please Choose a Category Above - </option>');
htp.print('</select>');
htp.print('<INPUT TYPE="submit" value="submit">');
htp.print('</FORM>');sorry, dimi, but this forum is limited to questions about the product Oracle HTML DB. if you're not sure what OTN discussion forum is best suited for your question, i think they'd have you ask for the correct one at...
Community Feedback (No Product Questions)
regards,
raj
ps-my answer to the second question at the top of Pop List and Developer Toolbar shows an easy way in htmldb to implement the type of thing you're after. -
Calling Batch files in PLSQL Procedure
Hi all,
I am working on a PLSQL procedure and having issues when I am trying to call a batch file.
Issue:-
I have a procedure which have to kick off a batch file. And that batch file needs to run in Windows not in Unix box.
Can someone please help me out in providing some samples or anything?
Thanks a lot in advance.Thank you rp0428 and sb92075,
I have tried to create a sample of what I am trying to get and so I have created the following code in a batch file and named as Check.bat:-
@set a=3
@set b=4
@set /a c=%a%+%b%
echo %c%
So based on those links you guys provided I have created an
Scheduler Job:-
BEGIN
DBMS_SCHEDULER.create_job (job_name => 'MYJOB1',
job_type => 'EXECUTABLE', JOB_ACTION => 'c:\Check.bat', enabled => TRUE,comments => 'runs Check.bat' );
END;
And the following Procedure :-
CREATE OR REPLACE PROCEDURE execute_bat_file
IS
BEGIN
DBMS_SCHEDULER.RUN_JOB ('MYJOB1', TRUE);
END execute_bat_file;
And used the following exec command:-
exec execute_bat_file;
I am getting the following error:-
Error starting at line 1 in command:
exec execute_bat_file
Error report:
ORA-27475: "ACTUATE.MYJOB1" must be a job
ORA-06512: at "SYS.DBMS_ISCHED", line 150
ORA-06512: at "SYS.DBMS_SCHEDULER", line 441
ORA-06512: at "ACTUATE.EXECUTE_BAT_FILE", line 4
ORA-06512: at line 1
27475. 00000 - "\"%s.%s\" must be a %s"
*Cause: An object of the wrong type was specified. For example, a table
could have been passed to the drop_job() procedure.
*Action: Reissue a different command applicable to this object type or
reissue the same command using an object of the valid type.
Can you guys please help with this?
Thank you once again -
How to pass int array as an IN parameter to PLSQL Procedure
Hi,
How to pass int array in java to a stored procedure througn jdbc
and what type of data type I should declare to this IN parameter
in PLSQL Procedure.
Thanks,
SimiHi,
The best way to do what you want depends on what you want. Start by describing what you need to do. It's best to post some sample data (CREATE TABLE and INSERT statments) and what results you want from that sample data. (See the forum FAQ: https://forums.oracle.com/message/9362002)
If you have ideas about how to do the job (e.g., populating a temporary table) it can be helpful to include those, too, but distinguish clearly between WHAT you need to do and HOW you might do it.
As Bencol suggested, a SYS_REFCURSOR might be the best way to pass back the results.
Since you didn't post your table, or even describe what you wanted to do with it, I'll illustrate using scott.emp, which is probably on your system.
Say you wanted a procedure that took a DATE as an argument, and returned a some designated columns (empno, ename and hiredate in the example below) for all employees hired on or after the given DATE. You might write a procedure like this:
CREATE OR REPLACE PROCEDURE hired_since
( start_date IN DATE
, out_data OUT SYS_REFCURSOR
AS
BEGIN
OPEN out_data FOR
SELECT empno, ename, hiredate
FROM scott.emp
WHERE hiredate >= start_date;
END hired_since;
SHOW ERRORS
You can test it in SQL*Plus like this:
VARIABLE c REFCURSOR
EXEC hired_since (DATE '1982-01-01', :c);
PRINT :c
The output I got from this test was:
EMPNO ENAME HIREDATE
7788 SCOTT 19-APR-87
7876 ADAMS 23-MAY-87
7934 MILLER 23-JAN-82 -
Call from Java Plsql Procedure with VArray as Out Parameter
Hi,
I have a Java web application(Tomcat server) that call a plsql procedure with Varray as OUT parameter.
The Plsql code is perfectly compiled.
When i run the application, I get the following error msg in my Tomcat window:
java.sql.SQLException: ORA-06530: Reference to uninitialized composite
ORA-06512: at "SEMS1.PACK_SEMSADMIN_OFFEREDJOBS", line 102
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:109
3)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat
{color:#0000ff}
Doubt: Do I need to declare ArrayDescriptors to retrieve the VArray from the Plsql procedure.
I think the below statement is enough; we need ArrayDescriptors only when we we wish to send a Plsql Object or Varray from Java code to the procedure. Plz correct me if not so.
dbCallableStatement.execute();
ARRAY SimpleOUTArray = (ARRAY) ((OracleCallableStatement) dbCallableStatement).
getObject(Integer.parseInt(arlParameterOutIndex.get(i).toString()));{color}
I am unable to realize where the mistake is?
{color:#800000}
{color}{color:#800000}
VARRAY AND PROC DETAILS:
TYPE STRUCT_JOB_DETAILS AS OBJECT
APPL_NO NUMBER (10),
S_FNAME VARCHAR2 (32 Byte),
S_MI VARCHAR2 (32 Byte),
S_LNAME VARCHAR2 (32 Byte),
APPL_DATE DATE,
DESCRIPTION VARCHAR2 (100 Byte),
S_UCID VARCHAR2 (8 Byte)
TYPE VARRAY_JOB_DETAILS IS VARRAY(100) OF STRUCT_JOB_DETAILS;{color}
{color:#800000}PROCEDURE:{color}
{color:#800000}CREATE OR REPLACE PACKAGE PACK_SEMSADMIN_OFFEREDJOBS
AS
TYPE Generic_Cursor_Type IS REF CURSOR;
--TYPE varray_job_detail is VARRAY(100) OF STRUCT_JOB_DETAILS;
--va_varray_job_detail varray_job_detail := varray_job_detail();
va_varray_job_detail VARRAY_JOB_DETAILS := VARRAY_JOB_DETAILS();
PROCEDURE Admin_Jobs_Offered_Rtr
ic_status IN VARCHAR2,
or_offered_jobs OUT Generic_Cursor_Type,
va_varray_job_detail OUT VARRAY_JOB_DETAILS
CREATE OR REPLACE PACKAGE BODY PACK_SEMSADMIN_OFFEREDJOBS
AS
PROCEDURE Admin_Jobs_Offered_Rtr
ic_status IN VARCHAR2,
or_offered_jobs OUT Generic_Cursor_Type,
va_varray_job_detail OUT VARRAY_JOB_DETAILS
AS
vc_query VARCHAR2(15000) := '';
vc_query_1 VARCHAR2(15000) := '';
counter NUMBER := 1;
vc_no NUMBER := 0;
or_applicants_list Generic_Cursor_Type;
TYPE type_appln_list IS RECORD
job_no NUMBER(10),
job_title VARCHAR2(50 BYTE),
account_no VARCHAR2(10 BYTE),
head_fname VARCHAR2(32 BYTE),
head_minitial VARCHAR2(10 BYTE),
head_lname VARCHAR2(32 BYTE),
num NUMBER
vn_appln_list type_appln_list;
TYPE type_job_offered IS RECORD
APPL_NO NUMBER (10),
S_FNAME VARCHAR2 (32),
S_MI VARCHAR2 (32),
S_LNAME VARCHAR2 (32),
APPL_DATE DATE,
DESCRIPTION VARCHAR2 (100),
S_UCID VARCHAR2 (8)
vn_job_offered type_job_offered;
BEGIN
vc_query := vc_query || ' SELECT jobs.job_no,job_title, account_no, head_fname, head_minitial, head_lname, num';
vc_query := vc_query || ' FROM jobs, ( ' ;
vc_query := vc_query || ' SELECT jobs.job_no,count(*) as num' ;
vc_query := vc_query || ' FROM student_apps ,jobs ' ;
vc_query := vc_query || ' WHERE jobs.job_no = student_apps.job_no' ;
vc_query := vc_query || ' AND (student_apps.status in (''o'',''t'')) '; --|| ic_status || ')' ;
vc_query := vc_query || ' AND jobs.status not in (''z'', ''Z'')' ;
vc_query := vc_query || ' GROUP BY jobs.job_no' ;
vc_query := vc_query || ' ) no_apps_off' ;
vc_query := vc_query || ' WHERE jobs.job_no = no_apps_off.job_no' ;
dbms_output.put_line('Executed Query_1');
va_varray_job_detail := VARRAY_JOB_DETAILS();
va_varray_job_detail.extend(100);
OPEN or_offered_jobs FOR vc_query;
LOOP
FETCH or_offered_jobs INTO vn_appln_list;
EXIT WHEN or_offered_jobs%NOTFOUND;
vc_query_1 := '';
vc_query_1 := vc_query_1 || ' SELECT stud_apps.appl_no APPL_NO, stud_apps.s_fname S_FNAME, ';
vc_query_1 := vc_query_1 || ' stud_apps.s_mi S_MI, stud_apps.s_lname S_LNAME, ';
vc_query_1 := vc_query_1 || ' stud_apps.appl_date APPL_DATE, look_up.description DESCRIPTION, ' ;
vc_query_1 := vc_query_1 || ' stud_apps.s_ucid S_UCID ' ;
vc_query_1 := vc_query_1 || ' FROM student_apps stud_apps,jobs jbs,lookup look_up' ;
vc_query_1 := vc_query_1 || ' WHERE stud_apps.status in (''o'',''t'') '; --(' || ic_status || ') ' ;
vc_query_1 := vc_query_1 || ' AND jbs.job_no = stud_apps.job_no' ;
vc_query_1 := vc_query_1 || ' AND jbs.status not in (''z '', ''Z'')' ;
vc_query_1 := vc_query_1 || ' AND stud_apps.status = look_up.code ' ;
vc_query_1 := vc_query_1 || ' AND look_up.type = ''st''' ;
vc_query_1 := vc_query_1 || ' AND stud_apps.job_no = ''' || vn_appln_list.job_no || ''' ' ;
vc_query_1 := vc_query_1 || ' ORDER BY appl_date' ;
dbms_output.put_line('Executed Query_2');
OPEN or_applicants_list FOR vc_query_1;
LOOP
FETCH or_applicants_list INTO vn_job_offered;
EXIT WHEN or_applicants_list%NOTFOUND;
va_varray_job_detail(counter).APPL_NO := vn_job_offered.APPL_NO;
va_varray_job_detail(counter).S_FNAME := vn_job_offered.S_FNAME;
va_varray_job_detail(counter).S_MI := vn_job_offered.S_MI;
va_varray_job_detail(counter).S_LNAME := vn_job_offered.S_LNAME;
va_varray_job_detail(counter).APPL_DATE := vn_job_offered.APPL_DATE;
va_varray_job_detail(counter).DESCRIPTION := vn_job_offered.DESCRIPTION;
va_varray_job_detail(counter).S_UCID := vn_job_offered.S_UCID;
counter := counter + 1;
END LOOP; --end of FOR
CLOSE or_applicants_list;
END LOOP; -- end of FETCH
END Admin_Jobs_Offered_Rtr;
END PACK_SEMSADMIN_OFFEREDJOBS;
/{color}
Reqire help plzzzz !!!
Thanks.Originally posted by JDBC Development Team:
It's very similar to other datatype except that it uses OracleTypes.ARRAY typecode and the value is mapped to a oracle.sql.ARRAY instance. The code looks as follows --
cstmt.registerOutParameter (idx, OracleTypes.ARRAY, "VARRAY_TYPE_NAME_HERE");
cstmt.execute ();
ARRAY array = (ARRAY) cstmt.getObject (idx);
Thanks for your reply.
I have to use:-
OracleCallableStatement cs1 = (OracleCallableStatement )conn.prepareCall
( "{call proj_array(?)}" ) ;
for retrieving a collection as an OUT parameter.
This gives me the errors:-
C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Blob getBlob(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
import java.sql.*;
^
C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Array getArray(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
import java.sql.*;
^
C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Clob getClob(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
import java.sql.*;
^
C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Ref getRef(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
import java.sql.*;
^
How do I get rid of these errors?
null -
How to trace plsql procedures call stack in EBS?
Hi experts,
I'm an newbie EBS user. EBS itself provides excellent trace function, which tells us sql scripts executed and corresponding cost information.
This is quite useful for EBS performance tuning, but not for debugging. At many times, i need to know which PLSQL procedures are called and
the complete stack after i do some operation on the EBS GUI. But no solution comes to me.
Appreciate your help, thanks in advance.
TedCraigB wrote:
This forum is for general Oracle Forms questions. Please post your question in the General EBS Discussion forum. If you have a general Forms question, by all means, ask it here! ;-)
Craig...Hi Craig, already transferred, thanks for your reminder. -
Disable cache in plsql procedure
Hello,
I made a portal page using a UITemplate.
This UITemplate have more plsql procedures that make the structure of my page.
One of this create a news ticker that change every day.
If I set the page cache "Cache Page Definition Only", when the news change, the page not views the correct news because it views the last version saved in cache.
Can i disable the cache only into the plsql procedure that create the news ticker?
Thanks
MonicaJust put all your html tag in htp.p, that will helps you to read html tags in PL/SQL Procedure.Just see the below example
htp.p('<script>');
htp.p('<table><tr><td>.......</td></tr></table>');
Hope this will helps you to solve the things.>
Just what exactly is that? Neither a proper script nor a proper HTML.
HTP.P is to write to browser, not read .
Maybe you are looking for
-
Adobe Acrobat XI Pro activation
I downloaded Adobe Acrobat XI Pro today, but when I try to activate, this product is not listed in the drop down menu. this is what I get "serial number you provided is valid, but a qualifying product could not be found on this computer". I tried s
-
Where is the report group?
I am an access developer not an excel developer, but I have been asked to create a report from some Excel spreadsheets. Am I misunderstanding something? The following article says I can create reports in Excel 10 by clicking on the reports group in
-
Initial load (R3AS). Number of blocks by object
Hi Gurus, does anyone have information about the number of blocks for each object while executing the initial load with transaction R3AS? Regards Mikel
-
Subcontracting PO for Non Valuated Material
Hi, We are taking the customer's material for Job work, which is non valuated material. But for one process we are giving the same material to the subcontractor. We are unable to raise a Subcontracting PO in the system for the same. Because system is
-
using Elements 11, can I get a plug in that supports both cameras, and still access my old raw 7.1 files