Help needed in a SQL
Hi,
We run a heavy batch load in many of our tables. Prior to the load we need to drop the indexes and then re create the indexes.
I worte a dynamic sql like
SELECT 'create index '||owner||'.'||a.index_name||' on '||owner||'.'||a.table_name||'('||column_name||');'
from dba_indexes a, dba_ind_columns b
where a.owner=b.index_owner
and a.table_name=b.table_name
and a.index_name=b.index_name
and a.owner='owner_name'
and a.table_name='table_name';
The problem with this query is that it is giving wrong result for composite indexes.
How to write a query that would pick up composite indexes as well.
Any help will be highly appreciated.
Thanks
SID3 wrote:
Are you referring to making the indexes unusable. In this case we have to rebuild them and index rebuilding is a big performance issue especially when millions of rows are involved.
Our DB is 10g R2.And recreating the indexes isn't rebuilding them? ?:|
Similar Messages
-
Help needed in framing SQL query.
Hi,
I have table having following schema:
PRODUCT_ID INT
DATE DATETIME
ITEMS_SOLD INT
This table contains data for a week (sunday to saturday). I want to write an SQL query to get (filter out) PRODUCT_ID of products which has same no. of ITEMS_SOLD for all 7 days. Also for given PRODUCT_ID I need to find the longest period of successive days where the no. of ITEMS_SOLD is same for all days in this period. Eg.(PRODUCT_ID 23 was sold as following along the week in no. of units sold: 4,6,6,6,6,7,4 .So the longest period is *4 days* from Monday to Thursday.) The first condition is special case of second condition where no. of days is 7.
Any help to get the SQL query will be appreciated.
Thanks,
Akshay.PRODUCT_ID DATE ITEMS_SOLD
1 10/10/2011 3
1 11/10/2011 3
1 12/10/2011 3
1 13/10/2011 3
1 16/10/2011 5
2 10/10/2011 4
2 11/10/2011 4
2 12/10/2011 4
2 13/10/2011 4
2 14/10/2011 4
2 15/10/2011 4
2 16/10/2011 4
Output:
PRODUCT_ID ITEMS_SOLD NO_OF_DAYS
1 3 4
2 4 7
Explanation of results:
The table to be queried contains data for 1 week: from 10/10/2011(Sunday) to 16/10/2011(Saturday). Now, product with PRODUCT_ID '1' was sold on dates 10,11,12,13,16. Out of these 5 days 3 units were sold on 4 successive days (from 10-13). So output should be like :
PRODUCT_ID ITEMS_SOLD NO_OF_DAYS
1 3 4
as longest period of successive days is 4 where same no. of units were sold i.e 3 units (other period is of 1 day on 16th ).
For PRODUCT_ID 2 we have only one period of 7 days where 4 units were sold each day. So we output :
PRODUCT_ID ITEMS_SOLD NO_OF_DAYS
2 4 7
Other case where same PRODUCT_ID have different units sold on each day should be ignored.
I hope that clarifies the problem more. Let me know in case I have missed out anything which should have been mentioned.
-Akshay. -
Help Needing in optimizing SQL
I need help optimizing the following SQL.
Following are the schema elements -
cto_xref_job_comp - Contains the Job Data
cto_mast_component - Contains component
cto_mast_product - Contains product info
cto_mast_model - Contains model info
cto_xref_mod_prod - Contains model and product assoiciation
cto_mast_model_scan - Contain the Scan order for each model family (the mod_id(should be renamed) refers to mod_fam_id on the cto_mast_model table).
Here is what I am trying to achieve
I want all the ATP components whose Travel card order (on cto_mast_model_scan > 0 ) and in addition I need the Phantoms that do not have any ATP components under them if they do not appear on ATP component list.
SELECT f.travelcard_order, b.job_number,
b.product_code,
b.line_number,
b.component_type,
b.component_item_number,
b.parent_phantom,
b.item_type,
a.comp_id,
a.comp_type_id,
a.comp_desc_short,
b.batch_id,
b.quantity_per_unit,
a.comp_notes,
b.COMPONENT_ITEM_DESCRPTION
FROM cto_xref_job_comp b,
cto_mast_component a,
cto_mast_product c,
cto_xref_mod_prod d,
cto_mast_model e,
cto_mast_model_scan f
WHERE ( b.job_number = 'CTO2499814001' ) AND
( b.batch_id = 21 ) AND
(b.item_type = 'ATP') AND
(b.parent_phantom = a.comp_desc_short ) and
(b.product_code = c.prod_desc_short ) and
(c.prod_id = d.prod_id ) and
(d.mod_id = e.mod_id) and
(e.mod_fam_id = f.mod_id) and
(a.comp_type_id=f.comp_type_id) and
(f.travelcard_order > 0)
union
SELECT distinct f.travelcard_order, b.job_number,
b.product_code,
b.line_number,
b.component_type,
b.parent_phantom,
b.item_type,
a.comp_id,
a.comp_type_id,
a.comp_desc_short,
b.batch_id,
1,
a.comp_notes,
FROM cto_xref_job_comp b,
cto_mast_component a,
cto_mast_product c,
cto_xref_mod_prod d,
cto_mast_model e,
cto_mast_model_scan f
WHERE ( b.job_number = 'CTO2499814001' ) AND
( b.batch_id = 21 ) AND (b.item_type is null) and
(substr(b.parent_phantom,1,1)='C') and
(b.parent_phantom = a.comp_desc_short )
and (b.parent_phantom not in (select parent_phantom from cto_xref_job_comp where job_number=b.job_number and batch_id=b.batch_id and item_type='ATP')) and
(b.product_code = c.prod_desc_short ) and
(c.prod_id = d.prod_id ) and
(d.mod_id = e.mod_id) and
(e.mod_fam_id = f.mod_id) and
(a.comp_type_id=f.comp_type_id) and (f.travelcard_order > 0)Here is a small example.
DECLARE
my_table VARCHAR2(10) := 'DUAL';
my_value INTEGER;
BEGIN
EXECUTE IMMEDIATE 'SELECT 1 FROM ' || my_table INTO my_value;
DBMS_OUTPUT.PUT_LINE(my_value);
END;
you can use your cursor value in the place of my_table.
Thanks,
Karthick.
http://www.karthickarp.blogspot.com/ -
Help needed in writing SQL CASE or DECODE statement
Hi experts,
I need to write a SQL to select order_num, cntry_cde, prod_id and Qty by joining order_num on PROD_ORDER and PROD_ORDER_TXT.
Here is my sample data
PRODORDER_
order_num cntry_cde Prod_id Qty
100 US A1 5
101 US A2 10
102 AU A3 4
103 AU A4 9
104 IN A5 3
PRODORDER_TXT_
order_num cntry_cde Prod_id
100 US A1
101 US A2
102 NZ A3
103 AU A4
104 A5
Here is the requirement,
1) If the cntry_cde in PROD_ORDER is same as cntry_cde in PROD_ORDER_TXT then select PROD_ORDER.cntry_cde (orders 100, 101, 103)
2) If they are different, pick the country code from PROD_ORDER_TXT (order 102, AU <> NZ)
3) If they are different and PROD_ORDER_TXT.cntry_cde is NULL, I cannot use it as cntry_cde in my report (order 104). It happenend just because of the bad data at source.
I cannot avoid it. Then simply use the cntry_cde from PROD_ORDER
Output expected
100 US A1 5
101 US A2 10
102 NZ A3 4 -- AU changed to NZ
103 AU A4 9
104 IN A5 3 -- IN retained as PROD_ORDER_TXT.cntry_cde is null
sample table creation and insert statements are below
create table prod_order
(order_num number,
cntry_cde CHAR(2),
prod_id VARCHAR2(6),
qty number)
create table prod_order_txt
(order_num number,
cntry_cde CHAR(2),
prod_id VARCHAR2(6))
insert into prod_order values (100, 'US', 'A1',5);
insert into prod_order values (101, 'US', 'A2',1);
insert into prod_order values (102, 'AU', 'A3',4);
insert into prod_order values (103, 'AU', 'A4',9);
insert into prod_order values (104, 'IN', 'A5',3);
insert into prod_order_txt values (100,'US','A1');
insert into prod_order_txt values (101,'US','A2');
insert into prod_order_txt values (102,'NZ','A3');
insert into prod_order_txt values (103,'AU','A4');
insert into prod_order_txt values (104,NULL,'A5');
commit;
Thanks for your help in advance
Edited by: sarvan on Mar 28, 2012 1:39 PMHello
Thank you for posting all of the ddl and test data along with your expected output - very helpful!. One small point would be to remember to type {noformat}{noformat} before and after any section of code or data in your post so that formatting is retained. Anyway, this should be a simple join and a combination of CASE and NVL...Select
po.order_num,
CASE
WHEN po.cntry_cde != NVL(pot.cntry_cde,po.cntry_cde)
THEN
pot.cntry_cde
ELSE
po.cntry_cde
END cntry_code,
po.prod_id,
po.qty
FROM
prod_order po
JOIN
prod_order_txt pot
ON
( po.order_num = pot.order_num
ORDER_NUM CN PROD_I QTY
100 US A1 5
101 US A2 1
102 NZ A3 4
103 AU A4 9
104 IN A5 3
5 rows selected.
HTH
David
Edited by: Bravid on Mar 28, 2012 8:32 AM
corrected != -
Help needed in PL/SQL for updating the column for multiple records
Hi,
I am new to PL/SQL and need some help. What is the most effiecient way to update some field in a table as I may need to update thousands of records. I have a coulmn groupid can have multiple records tied to it. All the records attached to some groupid have a priority field also.
How can I update the prorityfield value for all the groupids in a profiecient way. Here is a sample data
GroupId Priority
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
3 1Here I have three groups 1, 2, 3. Now if any group contains only one record the priority remains same e.g. groupid=3 on top. If any group contains more than one record e.g. groupid=1 & 2 I want to re-arrange the priority fields e.g. If I want to update groupid=1 now if I change the priority of 2 to 5 (make it the last) I want to rearrange the remaing records priority i.e. if 2 becomes 5 as I have 5 rows for groupid=1 then 5 becomes 4, 4 becomes 3, 3 becomes 2 and 1 remains the same.
Same wya if I want to make the priority 1 to 3 for groupid=2 then need 2 to become 1 and 3 to become 2 etc....
Any help is appreciated.
ThanksHi,
You don't need PL/SQL to do this (though you can put the following in PL/SQL if you want to):
UPDATE table_x
SET priority = CASE
WHEN groupid = 1
AND priority = 2
THEN 5
WHEN groupod = 1
AND priority BETWEEN 3 AND 5
THEN priority - 1
WHEN groupid = 2
THEN
CASE
WHEN prioity = 1
THEN 3
ELSE priority - 1
END
END
WHERE groupId IN (1, 2)
AND ( priority BETWEEN 2 AND 5
OR groupid = 2
);There are lots of different techniques that can reduce your coidng: for example, the nested CASE statement used for groupid=2 above.
You could do several smaller UPDATEs (for example, one just for groupid=1). Execution will be slower, but coding and testing will be faster.
You could make the "magic numbers" 2 (for groupid=1) and 1 (for groupid=2) variables, even outside of PL/SQL.
If you need more help, post the information that Satyaki requested. -
Help Needed in Dynamic Sql or alternate to Dynamic Sql
Hi Am working in sqlserver 2008 R2 and here is my Table structure and SPC
;create table SalaryReport(IdSalary int primary key identity(1,1),
IDMainCompany int,IDSubCompany int,Salary money,Incentive int,NoofEmployees int, SalaryDate datetime, Creditscore int );
insert into SalaryReport (IDMainCompany,IDSubCompany,Salary,Incentive,NoofEmployees,SalaryDate,Creditscore)
( Select 100 as IDMainCompany , 1000 as IDSubCompany ,200000 AS Salary, 20000 as Incentive, 500 as NoofEmployees,
'2014-01-01' as SalaryDate, 60 as Creditscore union all
Select 100 as IDMainCompany , 1001 as IDSubCompany ,300000 AS Salary, 40000 as Incentive, 600 as NoofEmployees,
'2014-01-01' as SalaryDate , 70 as Creditscore union all
Select 100 as IDMainCompany , 1002 as IDSubCompany ,400000 AS Salary, 40000 as Incentive, 1500 as NoofEmployees,
'2014-01-01' as SalaryDate , 45 as Creditscore union all
Select 101 as IDMainCompany , 1003 as IDSubCompany ,30000 AS Salary, 2000 as Incentive, 100 as NoofEmployees,
'2014-01-01' as SalaryDate, 60 as Creditscore union all
Select 102 as IDMainCompany , 1004 as IDSubCompany ,450000 AS Salary, 25000 as Incentive, 700 as NoofEmployees,
'2014-01-01' as SalaryDate, 30 as Creditscore)
Sample Test Script:
DECLARE @IDMainCompany int = 100;
DECLARE @Process_Date datetime = '2014-01-01';
declare @Query nvarchar(max);
SELECT
CAST(SR.IDMainCompany AS VARCHAR(12)) AS IDMainCompany
,CAST(SR.IDSubCompany AS VARCHAR(12)) AS IDSubCompany
,CAST(SR.Salary AS VARCHAR(12)) AS Salary
,CAST(SR.Incentive AS VARCHAR(12)) AS Incentive
,CAST(SR.NoofEmployees AS VARCHAR(12)) AS NoofEmployees
,CAST(SR.SalaryDate AS VARCHAR(15)) AS SalaryDate
,CAST((SR.Creditscore) AS VARCHAR(15)) AS average
FROM SalaryReport SR
WHERE SR.IDMainCompany = @IDMainCompany
AND DATEPART(MM, SR.SalaryDate) = DATEPART(MM, @Process_Date)
UNION ALL
SELECT
'' AS IDMainCompany
,'' AS IDSubCompany
,'Total: ' + CAST(SUM(SR.Salary) AS VARCHAR(12)) AS Salary
,'Total: ' + CAST(SUM(SR.Incentive) AS VARCHAR(12)) AS Incentive
,'Total: ' + CAST(SUM(SR.NoofEmployees) AS VARCHAR(12)) AS NoofEmployees
,'' AS SalaryDate
,'Total: ' +CAST(avg(SR.Creditscore) AS VARCHAR(12)) AS Totalaverage
FROM SalaryReport SR
WHERE SR.IDMainCompany = @IDMainCompany
AND DATEPART(MM, SR.SalaryDate) = DATEPART(MM, @Process_Date)
group by IDMainCompany, DATEPART(MM, SalaryDate)
the sample data i posted is having less columns. actually i have 20 columns in the select list. Also the parameters to the where condition i gave two i.e IDMainCompany, SalaryDate. I will also need to use IDSubCompany for some case. My skeleton will be
Create Procedure Test(@IDMainCompany int, @IDSubCompany int = null, @SalaryDate datetime)
as
BEGIN
IF(@IDMainCompany is not null && @IDMainCompany > 0 && @SalaryDate is not null && @SalaryDate <> ' ' &&
@IDSubCompany is null)
BEGIN
--The logic what discussed on previous posts will falls here with @IDMainCompany, @SalaryDate as parameter to the where condition
END
IF(@IDMainCompany is not null && @IDMainCompany > 0 && @SalaryDate is not null && @SalaryDate <> ' ' &&
@IDSubCompany is null && @IDSubCompany > 0 )
BEGIN
--The logic what discussed on previous posts will falls here with @IDMainCompany, @SalaryDate,@IDSubCompany as parameter to the where condition
END
END
As said i need to include 20 columns in the select list and as union all used on the previous sample there are 20 columns on the first query and 20 columns on the second query after the union all. The SPC will become big. If i repeat this for second if condition,
it will be too big. How can i reduce this writing more lines.
I am aware of the concept dynamic sql. Is there any other way to do this? or if dynamic sql is the only option, can anyone help me rewriting this select statements as dynamic sql
Could anyone please assist me
loving dotnet>>
thanks for your reply and yes, i am invoking this from my asp.net application using C# language. Would you like to share something?
<<
Yes,
You can use client side dynamic sql. I'm not talking about concatenating strings. I'm talking about using Runtime Text Tamplates (preprocesed templates in Visual Studio 2010).
Add a new "Runtime Text Template" item to your VS project. Be "MyReportTemplate.tt" the file name of the runtime text template. The content of this file should be something like the following:
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
SELECT
-- part of your query goes here
-- the interesting part come next
FROM
SalaryReport SR
WHERE
SR.IDMainCompany = @IDMainCompany
<# if (IDSubCompany.HasValue && IDSubCompany.Value > 0) { #>
AND SR.IDSubCompany = @IDSubCompany
<# } #>
AND
DATEPART(MM, SR.SalaryDate) = DATEPART(MM, @Process_Date)
GROUP BY
IDMainCompany, DATEPART(MM, SalaryDate)
Add a new c# code file named MyReportTemplate.partial.cs closed to MyReportTemplate.tt with the following code:
public partial class MyReportTemplate
public int? IDSubCompany { get; set; }
Then, to execute the query you can write a code similar to the following:
public DataTable ExecuteReport(int mainCompanyId, int? subCompanyId, DateTime processDate )
using (var cn = CreateConnection())
using (var cmd = new SqlCommand())
using (var adapter = new SqlDataAdapter(cmd))
cmd.Connection = cn;
var template = new MyReportTemplate
IDSubCompany = subCompanyId
cmd.CommandText = template.TransformText();
cmd.Parameters.AddWithValue("@IDSubCompany", subCompanyId == null ? (object) DBNull.Value : subCompanyId.Value);
cmd.Parameters.AddWithValue("@IDMainCompany", mainCompanyId);
cmd.Parameters.AddWithValue("@Process_Date", processDate);
var table = new DataTable();
adapter.Fill(table);
return table;
EntityLite: A Lightweight, Database First, Micro ORM -
Help need for PL/SQL collections
Hi All,
Please help me to solve the following Error.
Error # ORA-06533: Subscript beyond count.
I am using Oracle 10g.
I have data in the Test_table
id_col stat_col reason_col
101 A HPQ
101 A NULL
101 NULL EDU
101 P NULL
102 P NULL
102 NULL HEN
103 R NULL
103 Q NULL
Ny requirement is like:
id_col stat_col_ reason_col
101 A|P HPQ|EDU
102 P HEN
103 R|Q NULL
step1- Type tab_type as table of varchar2(32767);
step2 - I have written a function which returns the pl/sql table type
create or replace function fn_get_val(id in VARCHAR2)
return tab_type
cursor my_cur is
select id_col,stat_col,reason_col
from test_table WHERE ID_COL = ID;
lv_status VARCHAR2(100);
LV_reason varchar2(200);
lv_sep CHAR(1);
lv_disp_stat varchar2(200);
lv_disp_reason varchar2(200);
LN_STR NUMBER;
BEGIN
lv_tab_data:= tab_type();
lv_tab_data.extend;
open my_cur;
loop
fetch my_cur into lv_status,lv_reason;
exit when my_cur%notfound;
--dbms_output.put_line('my_curr.rowcount'|| my_curr.rowcount);
lv_disp_stat:= lv_disp_stat||lv_sep||lv_status;
lv_disp_reason:= lv_disp_reason||lv_sep||lv_reason;
lv_sep:= '|';
end loop;
-- To remove first occurance of (|) pipeline in the string.
LN_STR := INSTR(lv_str1,'|',1,1);
IF LN_STR = 1 THEN
lv_disp_stat := SUBSTR(lv_disp_stat ,2 );
END IF;
LN_STR := INSTR(lv_str2,'|',1,1);
IF LN_STR = 1 THEN
lv_disp_reason := SUBSTR(lv_disp_reason ,2 );
END IF;
lv_tab_data(1) := lv_disp_stat;
lv_tab_data.extend;
lv_tab_data(2) := lv_disp_reason;
return lv_tab_data;
EXCEPTION
DBMS_OUTPUT.PUT_LINE('Error in function fn_get_val # '||SQLERRM||' - '||dbms_utility.format_error_backtrace);
END fn_get_val;
STEP-3
I have created one procedure where the above function is called
CREATE OR REPLACE PROCEDURE my_proc (p_emp_id in Varchar2)
AS
lv_tab_ty tab_type;
CURSOR DET_CUR IS
SELECT EMP_ID_C,NAME_C,LOCATION
FROM DETAILS_TABLE
WHERE EMP_ID_C = p_emp_id;
type det_tab_ty is table of det_cur%type index by pls_integer;
lv_det_rec det_tab_ty;
BEGIN
lv_tab_ty := fn_get_val(p_emp_id);
dbms_output.put_line('lv_tab_ty.count is : '||lv_tab_ty.count);
OPEN DET_CUR;
LOOP
FETCH DET_CUR BULK COLLECT INTO lv_det_rec;
EXIT WHEN DET_CUR%NOTFOUND;
END LOOP;
CLOSE DET_CUR;
IF lv_det_rec.COUNT > 0 THEN
FOR i IN lv_det_rec.FIRST .. lv_det_rec.LAST
LOOP
INSERT INTO other_tab (emp_id_c,name_c,Loc_c,status_c,reason_c) values(lv_det_rec(i).emp_id_c,lv_det_rec(i).NAME_C,lv_det_rec(i).LOCATION,lv_tab_ty(1),lv_tab_ty(2) );
END LOOP;
END IF;
COMMIT;
EXCEPTIONS
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error in procedure my_proc # '||SQLERRM||' - '||dbms_utility.format_error_backtrace);
END my_proc ;
After exucting the above procedure i am getting the following error.
lv_tab_ty.count is : 1
Error # ORA-06533: Subscript beyond count.
This error is occured when my_curr.rowcount is equal to 0 (cursor defined in the function fn_get_val() ).
The function fn_get_val() does return null to the pl/sql table variable (lv_tab_ty).
AND another schenario:
If
lv_tab_data.count = 1
Then how can i handle this situation in the above procedure,because i need both
lv_tab_data(1)
and lv_tab_data(2)
to insert to the OTHER_TABLE in the procedure.
Please help me to solve this issue.
Thanks in Advance!!!
PKMYou can do it with one query with Tom Kyte's stragg function:
http://asktom.oracle.com/pls/asktom/f?p=100:11:3431223221768118::::P11_QUESTION_ID:15637744429336
with test_table(id_col,stat_col,reason_col) as (
select 101,'A','PQ' from dual union all
select 101,'A',NULL from dual union all
select 101,NULL,'EDU' from dual union all
select 101,'P',NULL from dual union all
select 102,'P',NULL from dual union all
select 102,NULL,'HEN' from dual union all
select 103,'R',NULL from dual union all
select 103,'Q',NULL from dual
select id_col,replace(stragg(stat_col),',','|'),replace(stragg(reason_col),',','|')
from test_table tt
group by id_colRegards,
Sayan M. -
Help needed in executing SQL query...
Hi,
I am very new to JDeveloper. Curently i am tryin to execute an SQL query from the BPEL process, the output of the query is to be mapped to a variable field from a target xsd file. the query is fairly simple, like
SELECT emp
FROM emp_table
WHERE emp_id=123
The target field, namely "employee", is an element from the xsd file. I tried using Java embedding activity to connect to the db and execute the query through a piece of Java code, but couldn't find a way to assign the output of the query to the field. however lately i also discovered the Database Adapter services which helps me create a database connection, but still i am not sure as of how to handle and map the output of the query to the variable field.
Can somebody please help me in resolving the issue either through Java Embed activity or Database Adapter services??
Thanks in advance
AnjanAnjan,
I suggest you try the [url http://forums.oracle.com/forums/forum.jspa?forumID=212]BPEL Forum
John -
Hi,
I want to find out a particular column value which has newline characters in that field.
example:
CREATE TABLE TEST_MASTER(TEST_NBR NUMBER(10),TEST_DESC varchar2(46));
INSERT INTO TEST_MASTER VALUES(2345,'hsjhiq')
INSERT INTO TEST_MASTER VALUES(235,'hsj
hiq')
IN this case the second record which has test_nbr has new line character in TESBegin
so, i can find this using:
SELECT TEST_NBR FROM TEST_MASTER WHERE INSTR(TEST_DESC,CHR(10))>0
It will give the test_nbr;
My requirement is to send those test_nbr whichever have newline character to a mail id:
I have tried the below code:
But it says UTL_MAIL.SEND must be declared.
i am using Oracle 10g XE.
is there any other package i need to use?
And one more thing is in case of one test_nbr we can store in a integer variable,
In case of lot of test_nbrs how to store them and send in a mail:
create or replace procedure findnewlinechar as
test_nbr number(12);
BEGIN
SELECT TEST_nbr into test_nbr from test_master where instr(test_desc,chr(10))>0;
SYSMAN.UTL_MAIL.send(sender => '[email protected]',
recipients => '[email protected]',
subject => 'Test Mail',
message => ':test_nbr is having issue',
mime_type => 'text; charset=us-ascii');
END
Any help will be appreciated.
ThanksPandeesh wrote:
Hi,
I want to find out a particular column value which has newline characters in that field.
example:
CREATE TABLE TEST_MASTER(TEST_NBR NUMBER(10),TEST_DESC varchar2(46));
INSERT INTO TEST_MASTER VALUES(2345,'hsjhiq')
INSERT INTO TEST_MASTER VALUES(235,'hsj
hiq')
IN this case the second record which has test_nbr has new line character in TESBegin
so, i can find this using:
SELECT TEST_NBR FROM TEST_MASTER WHERE INSTR(TEST_DESC,CHR(10))>0
It will give the test_nbr;
My requirement is to send those test_nbr whichever have newline character to a mail id:
I have tried the below code:
But it says UTL_MAIL.SEND must be declared.
i am using Oracle 10g XE.
is there any other package i need to use?UTL_SMTP is older alternative.
Are you sure that you have a Mail Transport Agent (MTA) that can be configured to relay your messages? -
Help needed in installing sql server 2014
i am trying to install sql server 2014 ,but error keeps coming .Any websites from which i can download.
Thank youi am trying to install sql server 2014 ,but error keeps coming .Any websites from which i can download.
Thank you
What are you trying to ask. Do you want link to download SQL Server or you are facing error or both?
Can you be clear with you question. You can locate summary.txt file which would have been generated after failed installation. Please post its content here.
This link would help you locate it
Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
My Technet Wiki Article
MVP -
Help need for PL/SQL procedure
Hi guys,
I have scenario like this
Schema T LOGTABLENAME TDIRECTORY
DEV DEV.ABC_LOG import-abc
DEV DEV.GBTSLOG import-gbts
DEV DEV.CLSSBOG import-cls
QA QA.TransactionlOG import-transaction
QA1 QA1.tlog import-ess
QA2 QA2.translog import-trnals
I have to write a procedure to get the log table data from schema Dev.I have to take Shcema dev and go to DEv.abc_log table and get the record from the dev.abc_logtable. The same way for other schema also with respective logtables .
I would appreciate your help or suggestions.
Reards,
User
Edited by: user1758353 on Dec 5, 2008 11:43 AMhello,
im also not sure if i get the point but maybe you need sth. like that...
create table schema_logtable as
select 'dev' schema, 'dev.abc_log' tlogtable, 'import-abc' tdirectory from dual union all
select 'dev', 'dev.gbtslog', 'import-gpts' from dual union all
select 'dev', 'dev.clssbog', 'import-cls' from dual );
declare
v_slt_row schema_logtable%rowtype;
type log_description_table is table of varchar2(1000char);
v_log_description log_description_table := log_description_table();
begin
for v_slt_row in ( select * from schema_logtable )
loop
execute immediate 'select log_description from ' || v_slt_row.tlogtable bulk collect into v_log_description;
for i in v_log_description.first .. v_log_description.last
loop
dbms_output.put_Line( 'log_desc: ' || v_log_description(i) );
end loop;
end loop;
end;
/this reads for every schema in table schema_logtable the name of the logtable.
for each logtable you fetch all rows of that table into a variable and you can do what-ever you want with that...
-mario -
Help needed for SCCM SQL query
Hello.
I have the below query to extract the workstations build date as well as the hardware info. This works fine.
Select distinct
v_R_System.Name0,
v_GS_COMPUTER_SYSTEM.Manufacturer0,
v_GS_COMPUTER_SYSTEM.Model0,
v_GS_COMPUTER_SYSTEM_PRODUCT.Version0,
v_GS_OPERATING_SYSTEM.Caption0,
v_GS_OPERATING_SYSTEM.CSDVersion0,
v_GS_OPERATING_SYSTEM.InstallDate0
From v_R_System
LEFT JOIN v_GS_OPERATING_SYSTEM ON v_GS_OPERATING_SYSTEM.ResourceID=v_R_System.ResourceID
LEFT JOIN v_GS_COMPUTER_SYSTEM_PRODUCT ON v_GS_COMPUTER_SYSTEM_PRODUCT.ResourceID=v_R_System.ResourceID
LEFT JOIN v_GS_COMPUTER_SYSTEM ON v_GS_COMPUTER_SYSTEM.ResourceID=v_R_System.ResourceID
LEFT JOIN v_GS_SYSTEM_CONSOLE_USAGE ON v_R_System.ResourceID=v_GS_SYSTEM_CONSOLE_USAGE.ResourceID
Where v_GS_OPERATING_SYSTEM.Caption0 = 'Microsoft Windows 7 Enterprise' and v_R_System.Is_Virtual_Machine0 =0
order by v_GS_OPERATING_SYSTEM.InstallDate0 desc
Now, I want a report of count of machines built based on "v_GS_COMPUTER_SYSTEM_PRODUCT.Version0" against every month and year of "v_GS_OPERATING_SYSTEM.InstallDate0".
For example, I want to know the number of machines under a particular model (which appears under v_GS_COMPUTER_SYSTEM_PRODUCT.Version0) built in June 2014. In this fashion I want a report for every model count for every month and year available under
InstallDate0 column)
Example:
Jan 2013 -> ThinkCentre M92p -> 55
Jan 2013 -> ThinkCentre M93 -> 40
Feb 2013 -> ThinkCentre M92p -> 10
Feb 2013 -> ThinkCentre M93 -> 39
Jan 2014 -> ThinkCentre M92p -> 20
Jan 2014 -> ThinkCentre M93 -> 25
Feb 2014 -> ThinkCentre M92p -> 12
Feb 2014 -> ThinkCentre M93 -> 35
Can anyone help?After scratching my head a bit, I came up with the below. Do you find any flaw in it?
Select
v_GS_COMPUTER_SYSTEM.Manufacturer0 as Manufacturer,
v_GS_COMPUTER_SYSTEM.Model0 as Model,
v_GS_COMPUTER_SYSTEM_PRODUCT.Version0 as "Model Info",
COUNT(*) as "No. of machines built",
CASE WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '1' THEN 'January'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '2' THEN 'February'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '3' THEN 'March'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '4' THEN 'April'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '5' THEN 'May'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '6' THEN 'June'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '7' THEN 'July'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '8' THEN 'August'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '9' THEN 'September'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '10' THEN 'October'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '11' THEN 'November'
WHEN Month(v_GS_OPERATING_SYSTEM.InstallDate0) = '12' THEN 'December'END as "Month",
YEAR(v_GS_OPERATING_SYSTEM.InstallDate0) as "Year"
From v_GS_COMPUTER_SYSTEM
LEFT JOIN v_GS_OPERATING_SYSTEM ON v_GS_OPERATING_SYSTEM.ResourceID=v_GS_COMPUTER_SYSTEM.ResourceID
LEFT JOIN v_GS_COMPUTER_SYSTEM_PRODUCT ON v_GS_COMPUTER_SYSTEM_PRODUCT.ResourceID=v_GS_COMPUTER_SYSTEM.ResourceID
Where v_GS_OPERATING_SYSTEM.Caption0 = 'Microsoft Windows 7 Enterprise' Group By v_GS_COMPUTER_SYSTEM.Manufacturer0,
v_GS_COMPUTER_SYSTEM.Model0,
v_GS_COMPUTER_SYSTEM_PRODUCT.Version0,
Month(v_GS_OPERATING_SYSTEM.InstallDate0),
YEAR(v_GS_OPERATING_SYSTEM.InstallDate0)
Order by v_GS_COMPUTER_SYSTEM_PRODUCT.Version0 desc -
Hi,
Can we use dynamic table name in PL/SQL.
My query is “select col_nm from table_nm”. Here I have to pass the table_nm using cursor.
I tried giving “select col_nm from cursor.table_nm”. But it not taking the cursor value for table name.
How can we do this in oracle?
Can we store the output of EXECUTE IMMEDIATE statement in a variable?Here is a small example.
DECLARE
my_table VARCHAR2(10) := 'DUAL';
my_value INTEGER;
BEGIN
EXECUTE IMMEDIATE 'SELECT 1 FROM ' || my_table INTO my_value;
DBMS_OUTPUT.PUT_LINE(my_value);
END;
you can use your cursor value in the place of my_table.
Thanks,
Karthick.
http://www.karthickarp.blogspot.com/ -
Help Needed -- Oracle XML/SQL utility and PL/SQL parser
Let's say we have an xml file
<?xml version="1.0" standalone="no"?>
<abc>
<def>
<ghi>test</ghi>
</def>
<jkl>
<mno>testing</mno>
</jkl>
</abc>
We can store the <def> tag in one table say def and <jkl> tag in another table say jkl.
Is there a way to combine def and jkl and insert in one table so that there in one row with two columns test and testing??
nullHi,
Are u sure that it is a java enabled database? The most common
case of failure with the xmlgen package is because the loadjava
command did not succeed.
Please make sure that oraclexmlsqlload.bat file loaded all the
java procedures successfully. If not then u would have to java-
enable your database by running the initjvm script. (please see
the docs).
Thx
Murali
Iveta Vojtko (guest) wrote:
: Hi,
: I have downloaded XML SQL Utility for Java against Oracle
8.0.5
: on WindowsNT. The xmlgen package was created successfully but
: its body is invalid and my PL/SQL test has failed because of
: following error: PLS-00103: Encountered the symbol "NAME"
: when expecting one of the following: := . ( @ % ; not null
range
: renames default character. The symbol ":= was inserted abefore
: "NAME" to continue.
: Is it because I am not using Oracle8i? I just want to use the
: server side of XML SQL. Please, reply asap. Thank you.
Oracle Technology Network
http://technet.oracle.com
null -
Help needed with a sql.
I have table BILLABLE_EVENT the relevant columns are transactionid,product_cd1,product_cd2,product_cd3,product_cd4,product_cd5
possible values for each product_cd1 are (A,B,C,D,E or null).
I want to find out the count per product_cd e.g look at 2 sample records
transactionid product_cd1 product_cd2 product_cd3 product_cd4 product_cd5
======================================================================
2843714 A B NULL D NULL
2843715 B A NULL NULL NULL
no 2 product code will be matched for 1 row(e.g if product_cd1='A' for a row then none other product code will have value='A' for that record
the ouput show be like
product_code count
============================
A 2
B 2
D 1
Thanks!I guess this way will be less complicated, but this is actually very bad...help
WITH temp AS
(SELECT 1 tr_id,
'A' cd_1,
'B' cd_2,
NULL cd_3,
'D' cd_4,
NULL cd_5
FROM DUAL
UNION ALL
SELECT 2,
'B',
'A',
NULL,
NULL,
NULL
FROM DUAL)
SELECT NVL(cd, 'NULL'),
COUNT (*)
FROM (SELECT cd_1 cd
FROM temp
UNION ALL
SELECT cd_2 cd
FROM temp
UNION ALL
SELECT cd_3 cd
FROM temp
UNION ALL
SELECT cd_4 cd
FROM temp
UNION ALL
SELECT cd_5 cd
FROM temp)
GROUP BY cd
Maybe you are looking for
-
Where can I buy the Apple original case for iPad 1st Gen?
Where can I buy the Apple original case for iPad 1st Generation?? I prefer the new one (and also the cheap one) :P
-
I am an amatuer at best. I am receiving an error when trying to access any part of windows explorer now. I can't open folders at all. Included in picture format is the error. I'm running XP Home edition service pack 2 more than enough ram/HD I recent
-
HT5192 Need help download iOS 5.1 for ipad
Can't find software update in general settings what do I need to do
-
How Do I Control The Order of Photos Displayed by an Emitter
I have a Motion 4 particle emitter which is displaying a sequence of photographs and text (all transparent TIFs), which works exactly as required, except the customer has requested the photographs appear in a particular order. How can this be achieve
-
Can't get a full screen display for keynote or movies.
The deck or movie only displays a smaller section on the center of the screen with a thick black border. It used to display full screen, I don't know when it changed.