EA1 Opening PL/SQL code
In 1.2.1 I'd open a worksheet via the tool bar drop down control. Then a right mouse click would reveal a menu with an Open file option. Next I'd open my file, which happens to be a .pkb.
This is not available in 1.5, but WORSE still the open file tool bar option ignores my preference settings, so I have to navigate to the required directory/file. The it the file opens in a source window. I've setup my colour scheme, which works in the worksheet. However the source window is only a black and white world. :o(
How do I open a file into a worksheet?
or
How do I apply colour to the source view?
That preferences is for executing scripts in sql worksheet with @ or @@. It is equivalent to the SQLPATH environment variable.
I've not seen it, but apparently this directory shows up as a short cut on the fileopen dialog (intermittently, there is a bug affecting it).
What I currently see is a shortcut called sql which seems to corrsepond to the last directory I was in. There is another thread on this EA2: Dialog shortcuts
Similar Messages
-
Hi,
I need a PL/SQL code for this one...
Let me know if something is not clear...
1) The table CLOB_CLOBJECT_CDA has the columns described below...
Explaining only those fields which are important in this context
-- CDA_STEP_ID : Basically a Sequence
-- CLOBJECT_SOURCE1_ID : Every id has got a set of records
-- CLOBJECT_SOURCE2_ID : Every id has got a set of records
-- LVL : There are total 8 levels..
This is the main aim :
1) There are total 16 million rows..(limited to 10 rows here)
2) We need to go through level by level (LVL column) & insert the intersection records (CLOBJECT_SOURCE1_ID intersect CLOBJECT_SOURCE2_ID)
into another table...but this is how it goes..
Level (LVL column) 3's basically have CLOBJECT_SOURCE1_ID as level (LVL column) 2 CDA_STEP_ID's..
(consider the statement --** where CLOBJECT_SOURCE1_ID = 285 which is same as 1st insert statement step id)..
The above process goes for next levels until 8..(so have to use loops)
So for ex :
We go through the first insert statement and insert the insertion records only when both CLOBJECT_SOURCE1_ID & CLOBJECT_SOURCE2_ID has got records ..
If we don't find any records for both of them we should skip the corresponding step id when we go to the next levels...
Let's go through the 1st insert statement...
-- We have CDA_STEP_ID = 285 & two sources CLOBJECT_SOURCE1_ID as 19 & CLOBJECT_SOURCE2_ID as 74...
-- We see the table CLOBJECT_COUNTS & check whether we have counts for both 19 & 74 ..(In fact we insert counts into this table only if they have records)
-- If so, we insert the intersection records into CDA_MRN_RESULTS ( we do have counts for both of them..) with CDA_STEP_ID 285...
-- Then we insert the step id which is 285 along with the count into CLOBJECT_COUNTS..
Let's go through another insert statement...
-- Consider CDA_STEP_ID = 288 which has two sources CLOBJECT_SOURCE1_ID as 19 & CLOBJECT_SOURCE2_ID as 92...
-- We see the table CLOBJECT_COUNTS & check whether we have counts for both 19 & 92 ..(we have records for 19 but not for 92)
-- So we should not proceed with this..& also skip all those records (future records with increasing levels..basically level 3's) which have got 288 as CLOBJECT_SOURCE1_ID..
(As said earlier that the present CDA_STEP_ID will always be CLOBJECT_SOURCE1_ID in the next level)...
I wrote the following code which is after the statement...
Let me have the create & insert statements here..
create table CLOB_CLOBJECT_CDA
CDA_STEP_ID NUMBER,
CDA_ID NUMBER,
CDA_SEQ_NUMBER NUMBER,
CLOBJECT_SOURCE1_TYPE VARCHAR2(3000),
CLOBJECT_SOURCE1_ID NUMBER,
CLOBJECT_OPERATOR VARCHAR2(3000),
CLOBJECT_SOURCE2_TYPE VARCHAR2(3000),
CLOBJECT_SOURCE2_ID NUMBER,
LVL NUMBER
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (285, 285, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 74, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (286, 286, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 75, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (287, 287, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 91, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (288, 288, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 92, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4869, 4869, 1, 'CDA_STEP', 285, 'INTERSECT', 'CLOBJECT', 91, 3); -- **
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4870, 4870, 1, 'CDA_STEP', 285, 'INTERSECT', 'CLOBJECT', 92, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4871, 4871, 1, 'CDA_STEP', 285, 'INTERSECT', 'CLOBJECT', 93, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4880, 4880, 1, 'CDA_STEP', 286, 'INTERSECT', 'CLOBJECT', 91, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4881, 4881, 1, 'CDA_STEP', 286, 'INTERSECT', 'CLOBJECT', 92, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4882, 4882, 1, 'CDA_STEP', 286, 'INTERSECT', 'CLOBJECT', 93, 3);
create table CDA_MRN_RESULTS
CDA_STEP_ID NUMBER,
MRN NUMBER,
INSERT_DATE_TIME DATE
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (19, 1, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (19, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (19, 3, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (74, 1, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (74, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (74, 4, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (75, 1, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (75, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (75, 6, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (91, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (91, 3, to_date('19-10-2011', 'dd-mm-yyyy'));
create table CLOBJECT_COUNTS
CDA_STEP_ID NUMBER,
CLOBJECT_COUNT NUMBER,
DATE_TIME DATE
Insert into CLOBJECT_COUNTS values (19,3, to_date('19-10-2011', 'dd-mm-yyyy'));
Insert into CLOBJECT_COUNTS values (74,3, to_date('19-10-2011', 'dd-mm-yyyy'));
Insert into CLOBJECT_COUNTS values (75,3, to_date('19-10-2011', 'dd-mm-yyyy'));
Insert into CLOBJECT_COUNTS values (91,2, to_date('19-10-2011', 'dd-mm-yyyy'));The output goes into two tables...
CDA_MRN_RESULTS : O/p of intersection records between source1 & source2 id
CLOBJECT_COUNTS : Step id with counts ...(useful for skipping next level step id's if either of source id has "0" counts)
Any help is appreciated..
Thanks..I tried to code this..but looping takes a lot of time..I want to skip certain rows where source1_step_id & source_2_step_id are not in clobject_counts table as we proceed to the next levels..Not sure how to skip the rows..
declare
cursor c1 (p_level varchar2 ) is
Select * from clob_clobject_cda
where lvl = p_level ;
TYPE V_TT IS TABLE OF C1%ROWTYPE INDEX BY PLS_INTEGER;
L_TT V_TT;
v1 number;
v2 number;
v_step_id number;
v_operator varchar2(100) := '';
begin
for i in 2..8 loop
open c1(i);
LOOP
FETCH C1 BULK COLLECT INTO L_TT LIMIT 500;
FOR indx IN 1 .. L_TT.COUNT
LOOP
v1 := L_TT(indx).clobject_source1_id;
v2 := L_TT(indx).clobject_source2_id;
v_step_id := L_TT(indx).cda_step_id;
v_operator := L_TT(indx).clobject_operator;
Execute Immediate ('Insert into cda_mrn_results Select --+ parallel (cm 128)
distinct ' || v_step_id || ', mrn, trunc(sysdate) dt from cda_mrn_results cm
where cda_step_id = ' || v1 || '
and cda_step_id in (Select cda_step_id from clobject_counts) ' ||
v_operator ||
' Select --+ parallel (cm 128)
distinct ' || v_step_id || ', mrn, trunc(sysdate) dt from cda_mrn_results cm
where cda_step_id = ' || v2 || '
and cda_step_id in (Select cda_step_id from clobject_counts) ' );
Insert --+ Append
into clobject_counts Select cda_step_id, count(distinct mrn),
insert_date_time dt from cda_mrn_results where cda_step_id = v_step_id group by cda_step_id,insert_date_time;
COMMIT;
END LOOP;
EXIT WHEN L_TT.COUNT = 0;
END LOOP;
CLOSE C1;
End Loop;
Commit;
End; -
Explain plans for PL/SQL code?
Hi!
I am pulling SQL statements (select, insert, update, delete, etc.) from PL/SQL code and producing explain plans. Some of the delete statements have "WHERE CURRENT OF" in them which produces an ORA-3001 error (feature not implemented) error. How can I do an explain plan of these statements? Can I replace "WHERE CURRENT OF" with "=" to get a plan? How far off will the plan be? Any suggestions, ideas, etc. greatfully appreciated!
This is Oracle 9.2.0.4/5 on AIX if it makes a difference.
Thanks!
Dave VenusWHERE CURRENT OF shouldn't be a problem. Here above an example on 9.2.0.4 on AIX5.2 :
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
SQL> create table TBL_USER_PROFILE_CATEGORY
2 as
3 select 654 id_category, 1103 id_user from dual union all
4 select 654 id_category, 1104 id_user from dual union all
5 select 18 id_category, 1103 id_user from dual union all
6 select 629 id_category, 1103 id_user from dual union all
7 select 110 id_category, 1103 id_user from dual union all
8 select 110 id_category, 1104 id_user from dual union all
9 select 18 id_category, 1104 id_user from dual union all
10 select 37 id_category, 1103 id_user from dual union all
11 select 24 id_category, 1103 id_user from dual union all
12 select 7 id_category, 104 id_user from dual union all
13 select 37 id_category, 1104 id_user from dual union all
14 select 22 id_category, 1103 id_user from dual union all
15 select 22 id_category, 1104 id_user from dual union all
16 select 25 id_category, 1104 id_user from dual union all
17 select 25 id_category, 1103 id_user from dual ;
Table created.
SQL>
SQL> alter table TBL_USER_PROFILE_CATEGORY add primary key (id_category, id_use
Table altered.
SQL>
SQL> CREATE OR REPLACE
2 PROCEDURE P$UPDATE_TBL_USER_PROFILE_CAT(p_id_cat_old IN NUMBER) AS
3 p_id_category number;
4 p_id_user number;
5 cursor mycur is select id_category, id_user
6 from TBL_USER_PROFILE_CATEGORY
7 where id_category = p_id_cat_old
8 for update of id_category;
9 BEGIN
10 open mycur;
11 LOOP
12 FETCH mycur INTO p_id_category, p_id_user;
13 EXIT WHEN mycur%NOTFOUND;
14 BEGIN
15 DELETE FROM TBL_USER_PROFILE_CATEGORY
16 WHERE CURRENT OF mycur;
17 END;
18 END LOOP;
19 CLOSE mycur;
20 COMMIT;
21 EXCEPTION WHEN OTHERS THEN rollback;
22 END;
23 /
Procedure created.
SQL>
SQL> exec P$UPDATE_TBL_USER_PROFILE_CAT(654)
PL/SQL procedure successfully completed.
SQL> select * from TBL_USER_PROFILE_CATEGORY;
ID_CATEGORY ID_USER
18 1103
629 1103
110 1103
110 1104
18 1104
37 1103
24 1103
7 104
37 1104
22 1103
22 1104
25 1104
25 1103
13 rows selected.
SQL> Please, paste here what's your code...
Nicolas. -
Dynamic PL/SQL code into ODI Procedure
Hi guys:
I have a PL/SQL code to execute into a ODI proc that changes because of a loop.
I have to update N tables that have the same prefix and its sufix is the dynamic part of my PL/SQL. Also I have to set the DT_ETL (I already have a variable in my package with the sysdate) and the limit of a rownum.
These are my variables:
vGET_CD_BASE*
vQTD_REG_UPDATE*
vETL_DATE*
The PL/SQL is described below (with the dynamic parts of it as ODI variables #vXXXXX):
DECLARE
CURSOR v_Cur IS
SELECT ROWID KEY_ROW FROM GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_*#vGET_CD_BASE* WHERE DT_ETL = TO_DATE('01/01/1900','DD/MM/YYYY') and rownum < *#vQTD_REG_UPDATE*;
TYPE t_Tabela IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
r_Reg t_Tabela;
BEGIN
OPEN v_Cur;
LOOP
FETCH v_Cur BULK COLLECT INTO r_Reg LIMIT 100000;
FORALL i IN 1..r_Reg.COUNT
UPDATE GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_*#vGET_CD_BASE*
SET DT_ETL = TO_DATE('*#vETL_DATE*','DD/MM/YYYY HH24:MI:SS')
WHERE ROWID = r_Reg(i);
EXIT WHEN v_Cur%NOTFOUND;
COMMIT;
END LOOP;
CLOSE v_Cur;
COMMIT;
END;
What do I have to change to make this PL/SQL works in ODI Procedure?
Regards.
Luiz AraujoLuiz,
One way you could do is by using the "Command on Source" and "Command on Target" feature of an ODI procedure:
In Command on Source, you can write query like:
>
select vGET_CD_BASE, vQTD_REG_UPDATE, vETL_DATE from some_configuration_table_containing_n_rows
>
In Command on Target, you can write:
>
DECLARE
CURSOR v_Cur IS
SELECT ROWID KEY_ROW FROM GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_#vGET_CD_BASE WHERE DT_ETL = TO_DATE('01/01/1900','DD/MM/YYYY') and rownum < #vQTD_REG_UPDATE;
TYPE t_Tabela IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
r_Reg t_Tabela;
BEGIN
OPEN v_Cur;
LOOP
FETCH v_Cur BULK COLLECT INTO r_Reg LIMIT 100000;
FORALL i IN 1..r_Reg.COUNT
UPDATE GG_DATA.WRK_SN_DET_ITEM_EXTR_PARC_#vGET_CD_BASE
SET DT_ETL = TO_DATE('*#vETL_DATE*','DD/MM/YYYY HH24:MI:SS')
WHERE ROWID = r_Reg(i);
EXIT WHEN v_Cur%NOTFOUND;
COMMIT;
END LOOP;
CLOSE v_Cur;
COMMIT;
END;
>
So, for "n" records that are returned by the source query, your PL/SQL package will run "n" times, each time substituting the values of vGET_CD_BASE, vQTD_REG_UPDATE, vETL_DATE respectively. -
Ability to open multiple SQL Worksheets for the same connection
Hi,
Please allow the ability to open multiple SQL Worksheets for the same connection, now only one can be opened.
ThanksLogged Bug 9000801 - ea1: otnforum: worksheet launcher does not remember the last/default connection
-Raghu -
Accessing html field value from pl/sql code, in the same package
hi friends,
my pl/sql web application is working fine. but now i need a small requirment.
ie, basicaly i need to access the user entered value of an element in html based form from pl/sql code, which is developed using pl/sql toolkit.
Here is the scenario:-
User entered a value in field1, then navigate to field2, and click a button for list of values,
when he clicks the button, internaly it is opening a cursor, where i want to pass field1's value to my cursor as a parameter. So in my pls/sql code , i want to access the value of field1. If you know, please help.
see the snippet of code.
htp.p('
function f1()
if (parseInt(learnIdx) ==1 )
for i in dev_Need('1')/*here i want to pass html form element value as a parameter */
loop
htp.p('content += "<option value='''||a.version_name||'''>'||a.version_name
||'</option>''"; ');
end loop;
thanks in advance.
Zameer.N.AHi,
Here's my suggestion
If you wanna access the dll check out "external procedures", you can search it everywhere in OTN.
However it's easier to use Heterogenous Services to connect database with other sources.
Check out http://asktom.oracle.com/pls/ask/f?p=4950:8:13454621522426176943::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:4406709207206,
Tak Tang answer on May, 25, 2004 rules! -
SCCM 2012 Reports: Viewing SQL Code
Hi
Is there a way to view the SQL code of the template reports .i.e. Software 06A - Search for installed software?
Regards
Ivanhow to download the .rdl:
Go to http://YOURConfigMgrServerNamethatHastheSRSRole/reports
Browse to the folder containing the report.
When you are looking at the report title, withOUT clicking on the report, when you hover over the report name, notice how there is a downward triangle on the right? Move your mouse over that, and pull that down. One of the choices listed is "Download..."
Click on that, and save the report's RDL to a location you'll remember.
Go to that location after saving, and you can open up that .rdl file using Notepad. A lot of the report will be for formatting, colors, etc; but if you search for the word "Select", you'll find at last one; possibly more if there are parameters
in that report. One of the locations for Select... something will be the main report code.
Standardize. Simplify. Automate. -
Hi There,
We have a table "ALL_POS" that looks like the following:
ROHO@rohopr> desc all_pos
Name Null? Type
OFFICE_TYPE_DESCRIPTION VARCHAR2(60)
POSITION_ABBREVIATION VARCHAR2(10)
POSITION VARCHAR2(60)
SD VARCHAR2(43)
HIRED NUMBER
OPEN NUMBERHere is the table sample data:
pss@pssd> select * from all_pos where ed = 'SD-100'
OFFICE_TYPE_DESCRIPTION POSITION_A POSITION ED HIRED OPEN
DISTRICT RL Revision Lead SD-100 1 1
DISTRICT SBHV SBO - Home Visits SD-100 1 0
DISTRICT SBS SBO - Standby SD-100 0 1
DISTRICT SBO Special Ballot Officer SD-100 2 0
DISTRICT TS TECHNICAL SUPPORT SD-100 1 0
DISTRICT TO TRAINING OFFICER SD-100 3 0
DISTRICT ICC SD-100 0 1
DISTRICT EC EVENT CLERK SD-100 1 0
DISTRICT FO Finance Officer SD-100 1 0
DISTRICT APIA Info. Asst - Adv Offices SD-100 4 0
DISTRICT REC RECRUITMENT OFFICER SD-100 2 0
DISTRICT RES RESOURCE STAFF SD-100 13 0
DISTRICT RO RETURNING OFFICER SD-100 1 1
DISTRICT RA REVISING AGENT SD-100 25 53
DISTRICT RAS REVISION ASSISTANT SD-100 0 2
DISTRICT RC Recruitment Clerk SD-100 0 2
OFFICE DRO RETURNING OFFICER SD-100 261 0
OFFICE SBDRO RETURNING OFFICER ON STAND-BY SD-100 15 1
OFFICE PC OFFICE CLERK CC SD-100 261 0
AREA APAM AREA AREA MANAGER SD-100 1 0
AREA AM AREA MANAGER SD-100 5 0
LOCATION IA INFORMATION ASSISTANT SD-100 60 0
LOCATION PDRA DAY REVISION ASSISTANT SD-100 79 0
LOCATION SDRO SUPERVISING DEPUTY RETURNING OFFICER SD-100 43 0
LOCATION TD Tabulator-DRO SD-100 1 0
OFFICE APC OFFICE CLERK SD-100 10 4
OFFICE APDRO OFFICE RETURNING OFFICER SD-100 5 2
27 rows selected.The SDs goes from SD-01 all through to SD-100. There are 40 distinct values for POSITION_ABBREVIATION as per the following:
pss@pssd> select distinct(POSITION_ABBREVIATION),POSITION from all_pos order by 1;
POSITION_A POSITION
ALO ABORIGINAL L. OFFICER
AM AREA MANAGER
APAM OFFICE AREA MANAGER
APC OFFICE CLERK
APC-R OFFICE CLERK - REPLACEMENT
APDRO OFFICE RETURNING OFFICER
APDRO-R OFFICE RETURNING OFFICER - REPLACEMENT
APIA Info. Asst - Adv OFFICEs
CLO Community Liaison Officer
DRO RETURNING OFFICER
DRO-R RETURNING OFFICER - REPLACEMENT
EC ELECTION CLERK
FO Finance Officer
HLO HOME L. OFFICER
IA INFORMATION ASSISTANT
ICC
OEO Other Election Officer
PC OFFICE CLERK
PC-R OFFICE CLERK - REPLACEMENT
PDRA OFFICEING DAY REVISION ASSISTANT
PDRA-R OFFICEING DAY REVISION ASSISTANT - REPLACEMENT
RA REVISING AGENT
RAS REVISION ASSISTANT
RC Recruitment Clerk
REC RECRUITMENT OFFICER
RES RESOURCE STAFF
RL Revision Lead
RO RETURNING OFFICER
SBDRO RETURNING OFFICER ON STAND-BY
SBHO SBO - Hospital
SBHV SBO - Home Visits
SBO Special Ballot Officer
SBS SBO - Standby
SDRO SUPERVISING RETURNING OFFICER
SDRO-R SUPERVISING RETURNING OFFICER - REPLACEMENT
SLO Student L. Officer
TD Tabulator-DRO
TD-R Tabulator-DRO-Replacement
TO TRAINING OFFICER
TS TECHNICAL SUPPORTWe need to create a report that takes the POSITION_ABBREVIATION data displaying it in columns (horizontally), for all the SDs (1 to 100) something like the following:
SD total_open total_hired ABO L. OFFICER AREA MANAGER OFFICE AREA MANAGER OFFICE CLERK OFFICE CLERK - REPLACEMENT ...etc
SD-1 125 35 10 5 10 10 8
SD-2 110 87 10 10 25 3 0
..etc
SD-100 300 120 20 22 20 15 28Can you kindly help us with the sql code to do that please.
P.S. oracle version 11.2.0.1 x64.
Thanks
Edited by: rsar001 on Nov 4, 2011 6:56 AMHi Frank,
Here is the table DDL, and inserts for 2 SDs (SD-1 and SD-2).
CREATE TABLE "ALL_POS"
( "OFFICE_TYPE_DESCRIPTION" VARCHAR2(60),
"POSITION_ABBREVIATION" VARCHAR2(10),
"POSITION" VARCHAR2(60),
"SD" VARCHAR2(43),
"HIRED" NUMBER,
"OPEN" NUMBER
insert into all_pos values ('DISTRICT' ,'TS', 'TECHNICAL SUPPORT', 'SD-1', 2,0);
insert into all_pos values ('DISTRICT' ,'TO', 'TRAINING OFFICER', 'SD-1', 1,0);
insert into all_pos values ('DISTRICT' ,'EC', 'EVENT CLERK', 'SD-1', 1,0);
insert into all_pos values ('DISTRICT' ,'FO', 'Finance Officer', 'SD-1', 1,0);
insert into all_pos values ('DISTRICT' ,'REC', 'RECRUITMENT OFFICER', 'SD-1', 1,0);
insert into all_pos values ('DISTRICT' ,'RES', 'RESOURCE STAFF', 'SD-1', 19,3);
insert into all_pos values ('DISTRICT' ,'RO', 'RETURNING OFFICER', 'SD-1', 1,0);
insert into all_pos values ('DISTRICT' ,'RA', 'REVISING AGENT', 'SD-1', 25,9);
insert into all_pos values ('DISTRICT' ,'RAS', 'REVISION ASSISTANT', 'SD-1', 2,0);
insert into all_pos values ('OFFICE' , 'DRO', 'RETURNING OFFICER', 'SD-1', 218,4);
insert into all_pos values ('OFFICE' , 'PC', 'OFFICE CLERK', 'SD-1', 221,1);
insert into all_pos values ('OFFICE' , 'APC', 'ADVANCE OFFICE CLERK', 'SD-1', 7,1);
insert into all_pos values ('OFFICE' , 'APC-R', 'ADVANCE OFFICE CLERK - REPLACEMENT','SD-1', 2,0);
insert into all_pos values ('OFFICE' , 'APDRO', 'OFFICE RETURNING OFFICER', 'SD-1', 5,0);
insert into all_pos values ('EVENT AREA' , 'AM', 'AREA MANAGER', 'SD-1', 4,0);
insert into all_pos values ('EVENT LOCATION' , 'IA', 'INFORMATION ASSISTANT', 'SD-1', 28,0);
insert into all_pos values ('EVENT LOCATION' , 'PDRA', 'OFFICEING DAY REVISION ASSISTANT','SD-1', 55,0);
insert into all_pos values ('EVENT LOCATION' , 'SDRO', 'SUPERVISING RETURNING OFFICER', 'SD-1', 36,0);
insert into all_pos values ('DISTRICT', 'RL', 'Revision Lead', 'SD-2', 1, 0);
insert into all_pos values ('DISTRICT', 'SBHV', 'SBO - Home Visits', 'SD-2', 2, 6);
insert into all_pos values ('DISTRICT', 'SBHO', 'SBO - Hospital', 'SD-2', 5, 4);
insert into all_pos values ('DISTRICT', 'SBO', 'Special B Officer', 'SD-2', 7, 0);
insert into all_pos values ('DISTRICT', 'TS', 'TECHNICAL SUPPORT', 'SD-2', 1, 0);
insert into all_pos values ('DISTRICT', 'TO', 'TRAINING OFFICER', 'SD-2', 3, 0);
insert into all_pos values ('DISTRICT', 'ALO', 'AB L. OFFICER', 'SD-2', 1, 0);
insert into all_pos values ('DISTRICT', 'EC', 'EVENT CLERK', 'SD-2', 0, 1);
insert into all_pos values ('DISTRICT', 'FO', 'Finance Officer', 'SD-2', 1, 0);
insert into all_pos values ('DISTRICT', 'APIA', 'Info. Asst - Adv OFFICEs', 'SD-2', 15, 1);
insert into all_pos values ('DISTRICT', 'OEO', 'Other EVENT Officer', 'SD-2', 3, 0);
insert into all_pos values ('DISTRICT', 'REC', 'RECRUITMENT OFFICER', 'SD-2', 1, 0);
insert into all_pos values ('DISTRICT', 'RES', 'RESOURCE STAFF', 'SD-2', 41, 0);
insert into all_pos values ('DISTRICT', 'RO', 'RETURNING OFFICER', 'SD-2', 0, 1);
insert into all_pos values ('DISTRICT', 'RA', 'REVISING AGENT', 'SD-2', 16, 62);
insert into all_pos values ('DISTRICT', 'RAS', 'REVISION ASSISTANT', 'SD-2', 1, 1);
insert into all_pos values ('DISTRICT', 'RC', 'Recruitment Clerk', 'SD-2', 0, 1);
insert into all_pos values ('OFFICE', 'APDRO', 'OFFICE RETURNING OFFICER', 'SD-2', 15, 1);
insert into all_pos values ('OFFICE', 'DRO', 'RETURNING OFFICER', 'SD-2', 161, 0);
insert into all_pos values ('OFFICE', 'SBDRO', 'RETURNING OFFICER ON STAND-BY', 'SD-2', 31, 22);
insert into all_pos values ('OFFICE', 'PC', 'OFFICE CLERK', 'SD-2', 161, 0);
insert into all_pos values ('EVENT AREA', 'AM', 'AREA MANAGER', 'SD-2', 22, 0);
insert into all_pos values ('EVENT LOCATION', 'IA', 'INFORMATION ASSISTANT', 'SD-2', 73, 0);
insert into all_pos values ('EVENT LOCATION', 'PDRA', 'OFFICEING DAY REVISION ASSISTANT','SD-2', 23, 0);
insert into all_pos values ('EVENT LOCATION', 'SDRO', 'SUPERVISING RETURNING OFFICER', 'SD-2', 16, 0);
insert into all_pos values ('EVENT LOCATION', 'TD', 'Tabulator-DRO', 'SD-2', 4, 0);
insert into all_pos values ('EVENT LOCATION', 'TD-R', 'Tabulator-DRO-Replacement', 'SD-2', 4, 0);
insert into all_pos values ('OFFICE', 'APC', 'ADVANCE OFFICE CLERK', 'SD-2', 30, 2);
commit;So, we're trying to display the data like so:
We need to create a report that takes the POSITION_ABBREVIATION data displaying it in columns (horizontally), for all the SDs (1 to 100) something like the following:
SD total_open total_hired ABO L. OFFICER AREA MANAGER OFFICE AREA MANAGER OFFICE CLERK OFFICE CLERK - REPLACEMENT ...etc
SD-1 125 35 10 5 10 10 8
SD-2 110 87 10 10 25 3 0Thanks
Edited by: rsar001 on Nov 4, 2011 8:52 AM -
Dynamic action - execute pl/sql code
Hi All and thanks fro any assistance.
I am trying to Execute the following pl/sql Code in a dynamic action however get the following error - AJAX call returned server error ORA-01403: no data found for Execute PL/SQL code.
I have all page items iin the page items to submit section.
declare
l_file_comments IMM_DOCUMENTS.FILE_COMMENTS%type;
l_file IMM_DOCUMENTS.FILE_BLOB%type;
l_filename IMM_DOCUMENTS.FILENAME%type;
l_mimetype IMM_DOCUMENTS.FILE_MIMETYPE%type;
l_charset IMM_DOCUMENTS.FILE_CHARSET%type;
begin
select f.blob_content,
f.filename,
f.mime_type,
nvl(f.file_charset, f.dad_charset)
into l_file,
l_filename,
l_mimetype,
l_charset
from wwv_flow_files f
where f.name = :P80_FILE;
if l_file is not null then
insert into IMM_DOCUMENTS
sub_id,
document_type_id,
filename,
file_blob,
file_comments,
file_mimetype,
file_charset
values
:P80_SUB_ID,
:P80_DOCUMENT_TYPE_ID,
l_filename,
l_file,
:P80_FILE_DESCRIPTION,
l_mimetype,
l_charset
delete from wwv_flow_files where name = :P80_FILE;
end if;
end;Hi Marie,
as Matthew says, the only part of the code that could result in that error is the select into statement. This is because, in pl/sql, a select into statement is expected to return one row only. If it returns no rows it raises a no data found exception and if it returns more than one row it raises a too many rows error.
If it is acceptable that this query may return no rows, then you have to handle this situation. The two methods that you can use would be firstly to use a named cursor and fetch a row from this, if there is no data then it does not raise an exception. The other method would be to put in an exception handler around the select statement.
EG - prefered, mainly because I think it is better to code in a way that minimises exception handling.
declare
l_file_comments IMM_DOCUMENTS.FILE_COMMENTS%type;
l_file IMM_DOCUMENTS.FILE_BLOB%type;
l_filename IMM_DOCUMENTS.FILENAME%type;
l_mimetype IMM_DOCUMENTS.FILE_MIMETYPE%type;
l_charset IMM_DOCUMENTS.FILE_CHARSET%type;
CURSOR file_cur IS
select f.blob_content,
f.filename,
f.mime_type,
nvl(f.file_charset, f.dad_charset)
from wwv_flow_files f
where f.name = :P80_FILE;
begin
OPEN file_cur;
FETCH file_cur INTO
l_file,
l_filename,
l_mimetype,
l_charset;
CLOSE file_cur;
if l_file is not null then
insert into IMM_DOCUMENTS
sub_id,
document_type_id,
filename,
file_blob,
file_comments,
file_mimetype,
file_charset
values
:P80_SUB_ID,
:P80_DOCUMENT_TYPE_ID,
l_filename,
l_file,
:P80_FILE_DESCRIPTION,
l_mimetype,
l_charset
delete from wwv_flow_files where name = :P80_FILE;
end if;
end;
OR
declare
l_file_comments IMM_DOCUMENTS.FILE_COMMENTS%type;
l_file IMM_DOCUMENTS.FILE_BLOB%type;
l_filename IMM_DOCUMENTS.FILENAME%type;
l_mimetype IMM_DOCUMENTS.FILE_MIMETYPE%type;
l_charset IMM_DOCUMENTS.FILE_CHARSET%type;
begin
BEGIN
select f.blob_content,
f.filename,
f.mime_type,
nvl(f.file_charset, f.dad_charset)
into l_file,
l_filename,
l_mimetype,
l_charset
from wwv_flow_files f
where f.name = :P80_FILE;
EXCEPTION
WHEN no_data_found THEN
NULL;
END;
if l_file is not null then
insert into IMM_DOCUMENTS
sub_id,
document_type_id,
filename,
file_blob,
file_comments,
file_mimetype,
file_charset
values
:P80_SUB_ID,
:P80_DOCUMENT_TYPE_ID,
l_filename,
l_file,
:P80_FILE_DESCRIPTION,
l_mimetype,
l_charset
delete from wwv_flow_files where name = :P80_FILE;
end if;
end;Note : code is untested.
Regards
Andre -
How to print all pl/sql code in a form?
Is there a way in Forms 6i to print out all the PL/SQL code in that form without having to open up every trigger, etc. and click Print? I'd like to get a text file dump of all the code for each Form in my application.
Have you tried the Object List Report (under File --> Administration) It will include other information as well as the PL/SQL e.g. properties of items etc, but all the PL/SQL should be there.
-
How to run an external application from PL/SQL code?
Hi,
I want to call an application like "Notepad" from PL/SQL code in a Windows2000 server. Is there any way to do that?
Thanks, best regards.
Paulo.declare
r varchar(4000);
begin
dbms_java.set_output(10000);
system_util.runshell('sh /ora9/runBackup.sh', r);
dbms_output.put_line(r);
end;
System_util package is
CREATE OR REPLACE PACKAGE System_Util IS
*System: Generic
*Package Name: System_util
*Description: This is an open source package which holds regular used
* methods by developers and dba's.
*Created by: Rae Smith
*Created Date: 27/06/2001
*Notes: This ia an free open source package that holds no warranty and
* therefore no-one connected to the development of this package
* can be made reasponsible for any outcomes by it's use.
MODIFICATION LOG**************************************************************
*DETAILS DATE VERS CHANGED BY
*===============================================================================
*Created 27-06-2001 1.0 Rae Smith
/********************************* Public Methhods ***************************************/
--- getDir returns the first directory value held in the init.ora file
FUNCTION getDir RETURN VARCHAR2;
--- getPrev.. returns the prevoise day from a gievn date
FUNCTION getPrevSat(pDate IN DATE) RETURN DATE;
FUNCTION getPrevSun(pDate IN DATE) RETURN DATE;
FUNCTION getPrevMon(pDate IN DATE) RETURN DATE;
FUNCTION getPrevTue(pDate IN DATE) RETURN DATE;
FUNCTION getPrevWed(pDate IN DATE) RETURN DATE;
FUNCTION getPrevThu(pDate IN DATE) RETURN DATE;
FUNCTION getPrevFri(pDate IN DATE) RETURN DATE;
--- isNumber returns TRUE or FALSE depending on a datatype passed
FUNCTION isNumber(pnumber IN VARCHAR2) RETURN BOOLEAN;
FUNCTION isNumber(pnumber IN NUMBER) RETURN BOOLEAN;
FUNCTION isNumber(pnumber IN DATE) RETURN BOOLEAN;
--- The writeFile allow you to write data to a file
--- writeFile has 2 Versions
--- v1 pass in the file name and the text to write to a file.
--- v2 pass in the file name, dbms_sql.varhar2s object
--- and the amount of rows to procces at a time
--- This enables you to write to afile in batch mode
PROCEDURE writeFile(pName IN VARCHAR2, pText IN VARCHAR2);
PROCEDURE writeFile(pName IN VARCHAR2, pText IN DBMS_SQL.VARCHAR2S, pRows IN PLS_INTEGER);
--- The appendFile methods allow you to append data to a file
--- This also has the inteligents to create the file if ts does not exist.
--- appendFile has 2 Versions
--- v1 pass in the file name and the text to write to a file.
--- v2 pass in the file name, dbms_sql.varhar2s object
--- and the amount of rows to procces at a time
--- This enables you to write to afile in batch mode
PROCEDURE appendFile(pName IN VARCHAR2, pText IN DBMS_SQL.VARCHAR2S, pRows IN PLS_INTEGER);
PROCEDURE appendFile(pName IN VARCHAR2, pText IN VARCHAR2);
--- The clearFile clears the data from a file.
PROCEDURE clearFile(pName IN VARCHAR2);
--- checkSyntax is a quick syntax checker for sql statements the is a limit to
--- the size used in the statement. If you have a error with
--- a statement then pass in the statement watch as it displays
--- the point where the error arose.
PROCEDURE checkSyntax(pSql IN VARCHAR2);
--- isEmpty this returns TRUE or FALSE
FUNCTION isEmpty(pValue IN VARCHAR2) RETURN BOOLEAN;
--- getTimeInMins returns the time in minutes for a specified date
FUNCTION getTimeInMins (pDate IN DATE) RETURN NUMBER;
--PROCEDURE get_time_in_mins (pDate IN DATE);
--- incDate returns a specified date incremented by value
FUNCTION incDate(pInc IN NUMBER DEFAULT .999999, pDate IN DATE DEFAULT SYSDATE) RETURN DATE;
--- decDate returns a specified date decremented by value
FUNCTION decDate(pInc IN NUMBER DEFAULT .999999, pDate IN DATE DEFAULT SYSDATE) RETURN DATE;
--- getTime returns the time in milliseconds
FUNCTION getTime RETURN NUMBER;
--- daysDiff returns the amount of days between two values
FUNCTION daysDiff(pHigh IN DATE, pLow IN DATE) RETURN NUMBER;
--- difference returns the diffeence between two numbers always
--- taking the lowest away from the highest
FUNCTION difference(pAnum IN NUMBER,pBnum IN NUMBER)RETURN NUMBER;
--- total returns the value of two numbers added together
FUNCTION total(pAnum IN NUMBER, pBnum IN NUMBER)RETURN NUMBER;
--- numberToWords returns the string for a number passed in
FUNCTION numberToWords(pNumb IN NUMBER) RETURN VARCHAR2;
--- runShell allows you to run operating commands from pl/sql
--- Only available with 8i
--- PROCEDURE runShell(pCmnd IN VARCHAR2, pErrMsg IN OUT VARCHAR2);
/**************************** Public Vaiables *******************************/
--- Public variable that holds the operating system directory
--- that the can be written to from withing the database.
vDir VARCHAR2(50);
END;
CREATE OR REPLACE PACKAGE BODY System_Util IS
FUNCTION getDir RETURN VARCHAR2
IS
BEGIN
RETURN vDir;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('ERROR...ERROR...System_Util.getDir');
RAISE;
END getDir;
/**** Private module to get the first directory for utl_file to use ****/
PROCEDURE getDir
IS
CURSOR cDir(p1 IN VARCHAR2)
IS
SELECT DECODE(INSTR(value, ','), 0, value, SUBSTR(value, 1, INSTR(value, ',')-1)) dir
FROM v$parameter
WHERE name = p1;
BEGIN
FOR rDir IN cDir('utl_file_dir') LOOP
vDir := rDir.dir;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('ERROR...ERROR...System_Util.getDir');
RAISE;
END getDir;
FUNCTION getPrevDate(pDate IN DATE, pDay IN VARCHAR2) RETURN DATE
IS
BEGIN
RETURN NEXT_DAY(pDate - 7, pDay);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevDate;
FUNCTION getPrevSat(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'saturday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevSat;
FUNCTION getPrevSun(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'sunday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevSun;
FUNCTION getPrevMon(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'monday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevMon;
FUNCTION getPrevTue(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'tuesday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevTue;
FUNCTION getPrevWed(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'wednesday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevWed;
FUNCTION getPrevThu(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'thursday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevThu;
FUNCTION getPrevFri(pDate IN DATE) RETURN DATE
IS
BEGIN
RETURN getPrevDate(pDate, 'friday');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getPrevFri;
FUNCTION isNumber(pNumber IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
IF TO_NUMBER(pNumber)> 0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END isNumber;
FUNCTION isNumber(pNumber IN NUMBER) RETURN BOOLEAN
IS
BEGIN
IF TO_NUMBER(pNumber) > 0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END isNumber;
FUNCTION isNumber(pNumber IN DATE) RETURN BOOLEAN
IS
BEGIN
IF TO_NUMBER(TO_CHAR(pNumber, 'YYYYMMDD')) > 0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END isNumber;
PROCEDURE writeFile(pName IN VARCHAR2, pText IN VARCHAR2)
IS
vFtype utl_file.file_type;
BEGIN
vFtype := UTL_FILE.FOPEN(vDir, pName,'w');
UTL_FILE.PUT_LINE(vFtype,pText);
UTL_FILE.FCLOSE(vFtype);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(vFtype);
RAISE;
END writeFile;
PROCEDURE writeFile(pName IN VARCHAR2, pText IN VARCHAR2, pFtyp IN OUT utl_file.file_type)
IS
vFtype utl_file.file_type;
BEGIN
vFtype := UTL_FILE.FOPEN(vDir, pName,'w');
UTL_FILE.PUT_LINE(vFtype,pText);
UTL_FILE.FCLOSE(vFtype);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(vFtype);
RAISE;
END writeFile;
PROCEDURE writeFile(pName IN VARCHAR2, pText IN DBMS_SQL.VARCHAR2S, pRows IN PLS_INTEGER)
IS
vFtype utl_file.file_type;
vText VARCHAR2(2000);
vCnt BINARY_INTEGER;
vRem BINARY_INTEGER;
vRowcnt PLS_INTEGER := 0;
BEGIN
vRem := MOD(pText.COUNT, pRows);
vFtype := UTL_FILE.FOPEN(vDir, pName, 'w');
vCnt := pText.FIRST;
LOOP
EXIT WHEN vCnt IS NULL;
vRowcnt := vRowcnt + 1;
IF vCnt = pText.LAST THEN
vText := vText||pText(vCnt);
UTL_FILE.PUTF(vFtype,vText);
UTL_FILE.FFLUSH(vFtype);
vText := '';
ELSIF MOD(vCnt, pRows) = 0 THEN
vText := vText||pText(vCnt)||'\n';
UTL_FILE.PUTF(vFtype,vText);
UTL_FILE.FFLUSH(vFtype);
vText := '';
ELSIF vRowcnt = vRem THEN
vText := vText||pText(vCnt)||'\n';
UTL_FILE.PUTF(vFtype,vText);
UTL_FILE.FFLUSH(vFtype);
ELSE
vText := vText||pText(vCnt)||'\n';
END IF;
vCnt := pText.NEXT(vCnt);
END LOOP;
UTL_FILE.FCLOSE(vFtype);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('ERROR...ERROR...SYSTEM_UTIL.WRITE_FILE');
UTL_FILE.FCLOSE(vFtype);
RAISE;
END writeFile;
PROCEDURE appendFile(pName IN VARCHAR2, pText IN DBMS_SQL.VARCHAR2S, pRows IN PLS_INTEGER)
IS
vFtype utl_file.file_type;
vText VARCHAR2(2000);
vCnt BINARY_INTEGER;
vRem BINARY_INTEGER;
vMode VARCHAR2(2) := 'a';
vRowcnt PLS_INTEGER := 0;
BEGIN
vRem := MOD(pText.COUNT, pRows);
vFtype := UTL_FILE.FOPEN(vDir, pName, vMode);
vCnt := pText.FIRST;
LOOP
EXIT WHEN vCnt IS NULL;
vRowcnt := vRowcnt + 1;
IF vCnt = pText.LAST THEN
vText := vText||pText(vCnt);
UTL_FILE.PUTF(vFtype,vText);
UTL_FILE.FFLUSH(vFtype);
vText := '';
ELSIF MOD(vCnt, pRows) = 0 THEN
vText := vText||pText(vCnt)||'\n';
UTL_FILE.PUTF(vFtype,vText);
UTL_FILE.FFLUSH(vFtype);
vText := '';
ELSIF vRowcnt = vRem THEN
vText := vText||pText(vCnt)||'\n';
UTL_FILE.PUTF(vFtype,vText);
UTL_FILE.FFLUSH(vFtype);
ELSE
vText := vText||pText(vCnt)||'\n';
END IF;
vCnt := pText.NEXT(vCnt);
END LOOP;
UTL_FILE.FCLOSE(vFtype);
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
IF vMode = 'a' THEN
writeFile(pName, pText, pRows);
ELSE
RAISE;
END IF;
WHEN OTHERS THEN
dbms_output.put_line('ERROR...ERROR...SYSTEM_UTIL.APPENDFILE');
UTL_FILE.FCLOSE(vFtype);
RAISE;
END appendFile;
PROCEDURE appendFile(pName IN VARCHAR2, pText IN VARCHAR2)
IS
vFtype utl_file.file_type;
vMode VARCHAR2(2) := 'a';
BEGIN
vFtype := UTL_FILE.FOPEN(vDir, pName, vMode);
UTL_FILE.PUTF(vFtype, pText);
UTL_FILE.FFLUSH(vFtype);
UTL_FILE.FCLOSE(vFtype);
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
IF vMode = 'a' THEN
writeFile(pName, pText);
ELSE
RAISE;
END IF;
WHEN OTHERS THEN
dbms_output.put_line('ERROR...ERROR...SYSTEM_UTIL.APPENDFILE');
UTL_FILE.FCLOSE(vftype);
RAISE;
END appendFile;
PROCEDURE clearFile(pName IN VARCHAR2)
IS
vFtype utl_file.file_type;
vText VARCHAR2(2000);
vCnt BINARY_INTEGER;
vRem BINARY_INTEGER;
vRowcnt PLS_INTEGER := 0;
BEGIN
vFtype := UTL_FILE.FOPEN(vDir, pName, 'w');
UTL_FILE.PUTF(vFtype,'');
UTL_FILE.FFLUSH(vFtype);
UTL_FILE.FCLOSE(vFtype);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('ERROR...ERROR...System_Util.CLEARFILE');
UTL_FILE.FCLOSE(vFtype);
RAISE;
END clearFile;
PROCEDURE checkSyntax(pSql IN VARCHAR2)
IS
sqlCur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
errPos PLS_INTEGER;
sqlStmt VARCHAR2(2000);
BEGIN
sqlStmt := pSql;
DBMS_SQL.PARSE(sqlCur, sqlStmt, DBMS_SQL.NATIVE);
EXCEPTION
WHEN OTHERS THEN
errPos := DBMS_SQL.LAST_ERROR_POSITION;
DBMS_OUTPUT.PUT_LINE(SQLERRM);
DBMS_OUTPUT.PUT_LINE(sqlStmt);
DBMS_OUTPUT.PUT_LINE(' ');
DBMS_OUTPUT.PUT_LINE(LPAD('^', errPos, '-'));
DBMS_SQL.CLOSE_CURSOR(sqlCur);
END checkSyntax;
FUNCTION isEmpty(pValue IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
IF pValue IS NULL OR pValue = '' OR pValue = ' ' THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END isEmpty;
FUNCTION getTimeInMins (pDate IN DATE) RETURN NUMBER
IS
vHours NUMBER;
vMins NUMBER;
vRetval PLS_INTEGER;
BEGIN
vHours := TO_NUMBER(TO_CHAR(pDate,'HH24'));
vMins := TO_NUMBER(TO_CHAR(pDate,'MI'));
vRetval := ((60 * vHours) + vMins);
RETURN vRetval;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getTimeInMins;
PROCEDURE getTimeInMins (pDate IN DATE)
IS
vHours NUMBER;
vMins NUMBER;
vRetval PLS_INTEGER;
BEGIN
vHours := TO_NUMBER(TO_CHAR(pDate,'HH24'));
vMins := TO_NUMBER(TO_CHAR(pDate,'MI'));
vRetval := ((60 * vHours) + vMins);
DBMS_OUTPUT.PUT_LINE('The time IN minutes IS: '||vRetval);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END getTimeInMins;
FUNCTION incDate(pInc IN NUMBER DEFAULT .999999, pDate IN DATE DEFAULT SYSDATE) RETURN DATE
IS
BEGIN
RETURN (TO_DATE(TO_CHAR(pDate + pInc, 'DD/MM/YYYY HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS'));
EXCEPTION
WHEN OTHERS THEN
RAISE;
END incDate;
FUNCTION decDate(pInc IN NUMBER DEFAULT .999999, pDate IN DATE DEFAULT SYSDATE) RETURN DATE
IS
BEGIN
RETURN (TO_DATE(TO_CHAR(pDate - pInc, 'DD/MM/YYYY HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS'));
EXCEPTION
WHEN OTHERS THEN
RAISE;
END decDate;
FUNCTION getTime RETURN NUMBER
IS
BEGIN
RETURN dbms_utility.get_time;
END getTime;
FUNCTION daysDiff(pHigh IN DATE, pLow IN DATE) RETURN NUMBER
IS
vHighdate DATE;
vLowdate DATE;
BEGIN
IF pHigh > pLow THEN
vHighdate := TO_DATE(TO_CHAR(pHigh, 'YYYYMMDD'), 'YYYYMMDD');
vLowdate := TO_DATE(TO_CHAR(pLow, 'YYYYMMDD'), 'YYYYMMDD');
ELSIF pLow > pHigh THEN
vHighdate := TO_DATE(TO_CHAR(pLow, 'YYYYMMDD'), 'YYYYMMDD');
vLowdate := TO_DATE(TO_CHAR(pHigh, 'YYYYMMDD'), 'YYYYMMDD');
END IF;
RETURN (vHighdate - vLowdate);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END daysDiff;
PROCEDURE dateCheck(pDateFrom IN OUT DATE, pDateTo IN OUT DATE)
IS
/* Declare the variable to hold the "from" date */
vDateFrom DATE;
BEGIN
/* If either date_from or date_to is null then set to todays date **
** using the sysdate **
** today's DATE AND IN the correct format */
pDateFrom := NVL(pDateFrom, SYSDATE);
pDateTo := NVL(pDateTo, SYSDATE);
/* Check that the from date is not greater than the to date if so **
** use the system_util.incDate to Increment the date by 1 day */
IF (pDateFrom > pDateTo) THEN
vDateFrom := pDateFrom;
pDateTo := System_Util.incDate(1, vDateFrom);
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/* calculates the difference of two numbers always taken the high from the low*/
FUNCTION difference(pAnum IN NUMBER, pBnum IN NUMBER)RETURN NUMBER
IS
vTotal NUMBER;
BEGIN
IF (pAnum > pBnum )OR (pAnum = pBnum)THEN
vTotal := (pAnum - pBnum);
ELSIF (pAnum < pBnum) THEN
vTotal := (pBnum - pAnum);
END IF;
RETURN (vTotal);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END difference;
/* calculates the Total of two numbers*/
FUNCTION total(pAnum IN NUMBER, pBnum IN NUMBER)RETURN NUMBER
IS
vTotal NUMBER;
BEGIN
vTotal := (pAnum + pBnum);
RETURN (vTotal);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END total;
FUNCTION numberToWords(pNumb IN NUMBER) RETURN VARCHAR2
IS
vRetval VARCHAR2(255);
vNumb PLS_INTEGER;
BEGIN
vNumb := pNumb;
vRetval := REPLACE(TO_CHAR(TO_DATE(vNumb,'j'),'jsp'),'-',' ');
RETURN (vRetval);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/*************** Only Available on 8i ********************************\
FUNCTION Catcherr(pStr IN VARCHAR2) RETURN VARCHAR2
IS
LANGUAGE JAVA
NAME 'catchErr.run(java.lang.String) return String';
PROCEDURE runShell(pCmnd IN VARCHAR2, pErrMsg IN OUT VARCHAR2)
IS
BEGIN
pErrMsg := Catcherr(pCmnd);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END runShell;
BEGIN
getDir;
END; -
Hello,
I'd really like to see the SQL code generated for a webi request in XI version 3.0. Could you help me please ?
In webi XI R2, you have a little button "i"sql that open the windows with the code (from the request) ; I find this functionality quite practical to look for a bug !
Thank you for your answer,
Regards,
CamilleHi Camille,
If it is built over a Relational DB eg Oracle and you have the permission granted then you should be able to see the SQL Viewer button.
If your universe is connecting to a OLAP Cube, SAP BEx query or anyother data source based on MDX then it will not be available.
If this is not the case for you I would report it as a bug.
Regards
Alan -
Got the following reply from db-kernel: SQL-Code :-903
Dear Experts,
I am having a problem running MaxDB Data backup on Netbackup.... Please se log below and suggest.
2011-04-11 13:30:38
Using environment variable 'TEMP' with value 'C:\Windows\TEMP' as directory for temporary files and pipes.
Using connection to Backint for MaxDB Interface.
2011-04-11 13:30:39
Checking existence and configuration of Backint for MaxDB.
Using configuration variable 'BSI_ENV' = 'C:\Netbackup_Script\bsi_backint_daily.env' as path of the configuration file of Backint for MaxDB.
Setting environment variable 'BSI_ENV' for the path of the configuration file of Backint for MaxDB to configuration value 'C:\Netbackup_Script\bsi_backint_daily.env'.
Reading the Backint for MaxDB configuration file 'C:\Netbackup_Script\bsi_backint_daily.env'.
Found keyword 'BACKINT' with value 'D:\sapdb\KGP\db\bin\backint.exe'.
Found keyword 'INPUT' with value 'E:\sapdb\data\wrk\KGP\backint.input'.
Found keyword 'OUTPUT' with value 'E:\sapdb\data\wrk\KGP\backint.output'.
Found keyword 'ERROROUTPUT' with value 'E:\sapdb\data\wrk\KGP\backint.error'.
Found keyword 'PARAMETERFILE' with value 'C:\Netbackup_Script\backint_parameter_daily.txt'.
Finished reading of the Backint for MaxDB configuration file.
Using 'D:\sapdb\KGP\db\bin\backint.exe' as Backint for MaxDB program.
Using 'E:\sapdb\data\wrk\KGP\backint.input' as input file for Backint for MaxDB.
Using 'E:\sapdb\data\wrk\KGP\backint.output' as output file for Backint for MaxDB.
Using 'E:\sapdb\data\wrk\KGP\backint.error' as error output file for Backint for MaxDB.
Using 'C:\Netbackup_Script\backint_parameter_daily.txt' as parameter file for Backint for MaxDB.
Using '300' seconds as timeout for Backint for MaxDB in the case of success.
Using '300' seconds as timeout for Backint for MaxDB in the case of failure.
Using 'E:\sapdb\data\wrk\KGP\dbm.knl' as backup history of a database to migrate.
Using 'E:\sapdb\data\wrk\KGP\dbm.ebf' as external backup history of a database to migrate.
Checking availability of backups using backint's inquire function.
Check passed successful.
2011-04-11 13:30:39
Checking medium.
Check passed successfully.
2011-04-11 13:30:39
Preparing backup.
The environment variable 'BSI_ENV' has already the value 'C:\Netbackup_Script\bsi_backint_daily.env'.
Setting environment variable 'BI_CALLER' to value 'DBMSRV'.
Setting environment variable 'BI_REQUEST' to value 'NEW'.
Setting environment variable 'BI_BACKUP' to value 'FULL'.
Constructed Backint for MaxDB call 'D:\sapdb\KGP\db\bin\backint.exe -u KGP -f backup -t file -p C:\Netbackup_Script\backint_parameter_daily.txt -i E:\sapdb\data\wrk\KGP\backint.input -c'.
Created temporary file 'E:\sapdb\data\wrk\KGP\backint.output' as output for Backint for MaxDB.
Created temporary file 'E:\sapdb\data\wrk\KGP\backint.error' as error output for Backint for MaxDB.
Writing 'D:\sapdb\pipe2 #PIPE' to the input file.
Prepare passed successfully.
2011-04-11 13:30:39
Starting database action for the backup.
Requesting 'SAVE DATA QUICK TO 'D:\sapdb\pipe2' PIPE BLOCKSIZE 8 NO CHECKPOINT MEDIANAME 'BACKDBFULL'' from db-kernel.The database is working on the request.
2011-04-11 13:30:39
Waiting until database has prepared the backup.
Asking for state of database.
2011-04-11 13:30:39 Database is still preparing the backup.
Waiting 1 second ... Done.
Asking for state of database.
2011-04-11 13:30:41 Database has finished preparation of the backup.
The database has prepared the backup successfully.
2011-04-11 13:30:41
Starting Backint for MaxDB.
Starting Backint for MaxDB process 'D:\sapdb\KGP\db\bin\backint.exe -u KGP -f backup -t file -p C:\Netbackup_Script\backint_parameter_daily.txt -i E:\sapdb\data\wrk\KGP\backint.input -c >>E:\sapdb\data\wrk\KGP\backint.output 2>>E:\sapdb\data\wrk\KGP\backint.error'.
Process was started successfully.
Backint for MaxDB has been started successfully.
2011-04-11 13:30:41
Waiting for end of the backup operation.
2011-04-11 13:30:41 The backup tool is running.
2011-04-11 13:30:41 The database is working on the request.
2011-04-11 13:30:43 The database has finished work on the request.
Receiving a reply from the database kernel.
Got the following reply from db-kernel:
SQL-Code :-903
2011-04-11 13:30:43 The backup tool is running.
2011-04-11 13:30:44 The backup tool process has finished work with return code 2.
The backup operation has ended.
2011-04-11 13:30:44
Filling reply buffer.
Have encountered error -24920:
The backup tool failed with 2 as sum of exit codes. The database request failed with error -903.
Constructed the following reply:
ERR
-24920,ERR_BACKUPOP: backup operation was unsuccessful
The backup tool failed with 2 as sum of exit codes. The database request failed with error -903.
Reply buffer filled.
2011-04-11 13:30:44
Cleaning up.
Copying output of Backint for MaxDB to this file.
Begin of output of Backint for MaxDB (E:\sapdb\data\wrk\KGP\backint.output)----
Reading parameter file C:\Netbackup_Script\backint_parameter_daily.txt.
Using D:\sapdb\KGP\db\bin\backint.exe as Backint for Oracle.
Using C:\Netbackup_Script\nt_initKGPdaily.utl as parameterfile of Backint for Oracle.
Using E:\sapdb\data\wrk\KGP\backinthistory.log as history file.
Using E:\sapdb\data\wrk\KGP\backintoracle.in as input of Backint for Oracle.
Using E:\sapdb\data\wrk\KGP\backintoracle.out as output of Backint for Oracle.
Using E:\sapdb\data\wrk\KGP\backintoracle.err as error output of Backint for Oracle.
Using staging area D:\sapdb\Stage1 with a size of 2147483648 bytes.
Reading input file E:\sapdb\data\wrk\KGP\backint.input.
Backing up pipe D:\sapdb\pipe2.
Found 1 entry in the input file.
Starting the backup.
Starting pipe2file program(s).
Waiting for creation of temporary files.
1 temporary file is available for backup.
Calling Backint for Oracle at 2011-04-11 13:30:43.
Calling 'D:\sapdb\KGP\db\bin\backint.exe -u KGP -f backup -t file -p C:\Netbackup_Script\nt_initKGPdaily.utl -i E:\sapdb\data\wrk\KGP\backintoracle.in -c' .
Backint for Oracle ended at 2011-04-11 13:30:43 with return code 2.
Backint for Oracle output: Reading parameter file C:\Netbackup_Script\nt_initKGPdaily.utl.
Backint for Oracle output: Using E:\sapdb\data\wrk\KGP\backint4oracle.in as input of Backint for Oracle.
Backint for Oracle output: Using E:\sapdb\data\wrk\KGP\backint4oracle.out as output of Backint for Oracle.
Backint for Oracle output: Using E:\sapdb\data\wrk\KGP\backint4oracle.err as error output of Backint for Oracle.
Backint for Oracle output: Using staging area D:\sapdb\Stage1 with a size of 2147483648 bytes.
Backint for Oracle output: Using E:\sapdb\data\wrk\KGP\backinthistory.log as history file.
Backint for Oracle output: Using D:\sapdb\KGP\db\bin\backint.exe as Backint for Oracle.
Backint for Oracle output:
Backint for Oracle output: Reading input file E:\sapdb\data\wrk\KGP\backintoracle.in.
Backint for Oracle output: Backing up file D:\sapdb\Stage1.0.
Backint for Oracle output: Found 1 entry in the input file.
Backint for Oracle output:
Backint for Oracle output: Starting the backup.
Backint for Oracle output: Starting pipe2file program(s).
Backint for Oracle output:
Backint for Oracle output: Calling Backint for Oracle at 2011-04-11 13:30:43.
Backint for Oracle output: Calling 'D:\sapdb\KGP\db\bin\backint.exe -u KGP -f backup -t file -i E:\sapdb\data\wrk\KGP\backint4oracle.in -c' .
Backint for Oracle output: Backint for Oracle ended at 2011-04-11 13:30:43 with return code 2.
Backint for Oracle output: Backint for Oracle output: Reading parameter file .
Backint for Oracle output: Backint for Oracle output:
Backint for Oracle output: Backint for Oracle output:
Backint for Oracle output: Backint for Oracle error output: No staging area is defined in the parameter file.
Backint for Oracle output: Backint for Oracle error output: The path of Backint for Oracle is not defined in the parameter file.
Backint for Oracle output: Backint for Oracle error output: The name of the history file is not defined in the parameter file.
Backint for Oracle output: Backint for Oracle error output: The name of the input file of Backint for Oracle is not defined in the parameter file.
Backint for Oracle output: Backint for Oracle error output: The name of the output file of Backint for Oracle is not defined in the parameter file.
Backint for Oracle output: Backint for Oracle error output: The name of the error output file of Backint for Oracle is not defined in the parameter file.
Backint for Oracle output: Backint for Oracle error output:
Backint for Oracle output:
Backint for Oracle output: Finished the backup unsuccessfully.
Backint for Oracle output:
Backint for Oracle output: #ERROR D:\sapdb\Stage1.0
Backint for Oracle output:
Backint for Oracle error output: Backint for Oracle was unsuccessful.
Backint for Oracle error output:
Finished the backup unsuccessfully.
#ERROR D:\sapdb\pipe2
End of output of Backint for MaxDB (E:\sapdb\data\wrk\KGP\backint.output)----
Removed Backint for MaxDB's temporary output file 'E:\sapdb\data\wrk\KGP\backint.output'.
Copying error output of Backint for MaxDB to this file.
Begin of error output of Backint for MaxDB (E:\sapdb\data\wrk\KGP\backint.error)----
Backint for Oracle was unsuccessful.
End of error output of Backint for MaxDB (E:\sapdb\data\wrk\KGP\backint.error)----
Removed Backint for MaxDB's temporary error output file 'E:\sapdb\data\wrk\KGP\backint.error'.
Removed the Backint for MaxDB input file 'E:\sapdb\data\wrk\KGP\backint.input'.
Have finished clean up successfully.> Requesting 'SAVE DATA QUICK TO 'D:\sapdb\pipe2' PIPE BLOCKSIZE 8 NO CHECKPOINT MEDIANAME 'BACKDBFULL'' from db-kernel.The database is working on the request.
This seems to be your problem, the pipe is wrongly defined. On Windows it looks like
\\.\pipe1
see
http://msdn.microsoft.com/en-us/library/aa365783.aspx
Markus -
PL/SQL code written in db or in application...????
Hi ,
Which is the best...at performance , maintability... e.t.c.???
To write PL/SQL as validation process of data values going to be inserted in db:
1) as db trigger (before insert or update row-level trigger)
2) in application level - in Forms10g...
This PL/SQL code compares some pairs of data values only.... there DML statement....
Both db server and App server are considered to be or in the same machine or in two machines very close to each other...
Note: i use Db10g .
Thanks...
SimIt is all about moving parts. How many there are. Where they are located.
The less moving parts, the less the complexity, the bugs - and the better the performance (less wheels to turn to crunch data), the easier the maintenance and the better the flexibility.
Part of this is having the moving parts close to the data. Kind of obvious - what is faster? Shipping data from the db engine to a front-end application via a app server and web server? Or shipping the data from the db (SQL) engine to a PL/SQL process running as part and parcel of db instance? IPC is significantly faster than TCP/IP.
Having the moving parts close to the data also means that it can scale with the data. Oracle is good at scalability. It is designed at its very core to be scalable. Partitions to reduce I/O. Shared Server to reduce o/s resource footprint per client session. Shared pool to re-use SQL. DB buffer to cache data. RAC to run multiple db instances for a single physical database. Etc. Etc.
With the application moving parts being close to the data, it inherits this scalability. You can "multi-thread" application code using table pipelines. You have access to forking application code using background processes (DBMS_JOB and DBMS_SCHEDULER). You have bulk processing in order to transfer more data per SQL engine call, between the buffer cache and your application, and thus also reduce expensive context switching.
This list goes on and on.
All this is summarised into the following rules.
Rule 1. Do it in SQL.
Rule 2. Only when SQL cannot do it, use PL/SQL. (e.g. SQL is not suited for managing and controlling process flow - PL/SQL is)
Rule 3. Only when PL/SQL cannot do it, use <insert-language-here> (e.g. PL/SQL cannot render a Windows grid on the client - but Delphi/C#//Java can).
Also keep in mind that in the modern client-server paradigm we deal with a web architecture. Which means the client is a web browser. And this means that PL/SQL can pass the data (HTML) required by the client (web browser) to render the User Interface.
Have a look at APEX (Oracle's Application Express) for how this works. http://apex.oracle.com
All you need to develop web applications is APEX (a PL/SQL product suite in the database) and a web browser. Kickass stuff... :-) -
DECLARE
SQ VARCHAR2(100);
BEGIN
SQ := 'SELECT * FROM EMP WHERE EMPNO=7788';
RETURN SQ;
END
THE ABOVE PL/SQL CODE WORKING FINE
BUT I NEED CONDITION BASED ON ENAME
SQ:='SELECT * FROM EMP WHERE ENAME=''SCOTT'';
IT IS GIVEING ERROR
WHAT TO DO?Hi,
You're missing the final quote - you have the quotes for SCOTT but not the one to close the SQ string:
DECLARE
SQ VARCHAR2(100);
BEGIN
SQ := 'SELECT * FROM EMP WHERE EMPNO=''SCOTT''';
RETURN SQ;
ENDAndy
Maybe you are looking for
-
I just got a new Mac Book for college and I created my own apple id for it. My family already has a shared account and I was hoping to transfer the purchases from that account onto my new account. I tried the Homesharing feature, but we already have
-
Questions about https and os version
Hi, we are installing 2 s160 OS Version same machine, same license feature, but after last os upgrade we have 2 different version v7.1.1-033 and v7.1.1-027 Why ? https, for the moment customer don't want enable https proxy, but user must access to ht
-
Business Process Analysis Suite
Newbie question: Business Process Analysis Suite - where to get the + referring to the manual "as a set." The official website of strange picture - blank page download the product: http://www.oracle.com/technetwork/middleware/bpa/downloads/index.html
-
Vector (good for storing) and arrays(good for numerical sums, multiplying)
Hi guys, I am trying to use vectors because I need a variable lenght and store 2D arrays in one coordenate of a vector. That is why I am using vector instead arrays. I can turn the type of variable using "Integer" (instead of "int" as arrays), "Doubl
-
What if my hard disk damaged?
I'm using T61 with Vista Business. I used to restore my system frequently to original factory settings, whenever I faced any problem. My questions are: 1- Is it really danger to restore the system frequently? 2- How can I recover my system if the har