The exception of procedure management
Hello guys,.
I have a code below:
BEGIN
-Appeal procedure B;
END;
B() PROC
AS
USER_DEF EXCEPTION;
BEGIN
IF < SOME_CONDITION > THEN
RAISE USER_DEF;
END IF;
END;
I want to throw an exception of PROCEDURE B and want to handle in the calling PL/SQL block.
IS THIS POSSIBLE?
Can anyone guide me on this please?
Thank you
Rajendra
Hello
given that the exception is defined in B the calling procedure may not see it.
You can create a package with your exceptions, then B would raise errorpackage.user_def and the calling procedure can check WHEN errorpackage.user_def.
Concerning
Marcus
Edit:
Example of
CREATE or REPLACE PACKAGE my_errors
AS
e_user_defined EXCEPTION;
c_user_defined CONSTANT INTEGER: =-20500;
PRAGMA EXCEPTION_INIT (e_user_defined,-20500);
...
Now, you can
RAISE my_errors.e_user_defined;
and search for
WHEN my_errors.e_user_defined THEN
And your exception will be associated with SQLCODE-20500
See also 101 PL/SQL: exception handling
Tags: Database
Similar Questions
-
The exception of collection management in bulk
Hello guys,.
Please help me with a code to retrieve the data from the table with the wrong data type...
I have a table with data
Col1 (VARCHAR2 (10))
--------------------
1001
1002
1003
1004
1006
1007
A
1009
1010
I need to write a PL/SQL code to bulk collect the data in the table above in a variable (number v_num) except that "a." Please let me know how to handle the exception invalid number in this case. I use oracle 10G
But I need to know how to handle the exception in Collect(while collecting the data, there is an error) in bulk
Hmm, good to know how it works, you can try to SAVE the exceptions (as below). But remember what said Paul Horth and keep in mind. That is why I didn't post earlier.
-Create a table to store
SQL > create table tab_num (col1 NUMBER);
DECLARE
type tt is the table of a % rowtype;
v_num tt;
v_errnum NUMBER;
CURSOR c1
IS
SELECT col1 from a;
BEGIN
OPEN c1;
LOOP
FETCH c1 COLLECT LOOSE v_num LIMIT 1; -The limit that you can modify according to the requirement
-DBMS_OUTPUT. Put_line('v_num. COMTE-'|| v_num. COUNT);
WHEN v_num EXIT. COUNT = 0;
FORALL idx IN 1.v_num. COUNT SAVE EXCEPTIONS
INSERT INTO tab_num VALUES v_num (idx);
COMMIT;
END LOOP;
CLOSE c1;
EXCEPTION
WHILE OTHERS THEN
DBMS_OUTPUT. Put_line ('Others - Err' |) SQLERRM);
v_errnum: = SQL % BULK_EXCEPTIONS. COUNTY;
BECAUSE me IN 1.v_errnum
LOOP
DBMS_OUTPUT. Put_line ('Err' |) SQL % BULK_EXCEPTIONS (i) .error_index | "Message - ' | SQLERRM (0 - SQL %BULK_EXCEPTIONS(i).error_code));)
END LOOP;
END;
-
the exception in the procedure call management
Hello
I have a package where currently make phone calls to private public process procedures.
and the senario is: -.
create package body p_tst
is
ex_failed exception;
-It's private proc
procedure p_private
is
Start
.
.
raise ex_failed;
exception
When ex_failed
then
lift;
.........
end p_private;
procedure p_public
is
Start
....
-nomaking appeal to the private sector
-procedure
p_private;
-Here, I need to catch
-the exception thrown
-past of callee
-procedure
When ex_failed
...
end p_public;
end;
Basically, I want to catch any exception of procedure called passed to the procedure call and raise the same exception by calling procedure.
is it possible to intercept the exception even in the calling procedure?Yes, p_private throws the exception, it will be taken by p_public and the program stops after dbms_output.
-
How to manage the plsql error occurring in the exception block
We know how to manage exceptins located in the BEGIN block.
But I am unable to catch the exception in the exception block. Write an erroeneous code so that the control will go to the exception block and there is also a plsql error, but I am unable to handle that error, it returns the error to the calling environment.
DECLARE
CNT NUMBER (5): = 0;
BEGIN
Select "Chris" IN double's NTC;
DBMS_OUTPUT. Put_line (to_char (CNT));
EXCEPTION
WHEN invalid_number CAN
DBMS_OUTPUT. Put_line (' error occurred inside the start block ');
CNT: = "deba";
WHILE OTHERS THEN
DBMS_OUTPUT. Put_line (' error occurred inside the start block ');
END;
Please suggest me how to catch this exception?Hello
DECLARE
CNT NUMBER (5): = 0;BEGIN
Select "Chris" IN double's NTC;
DBMS_OUTPUT. Put_line (to_char (CNT));EXCEPTION
WHEN invalid_number CAN
DBMS_OUTPUT. Put_line (' error occurred inside the start block ');CNT: = "deba";
WHILE OTHERS THEN
DBMS_OUTPUT. Put_line (' error occurred inside the start block ');END;
First of all your exception mouhamadou who you have sent i.e. invalid_number itself does not.
You should use named exception VALUE_ERROR to catch the exception in the main block.SQL> DECLARE 2 cnt NUMBER(5):=0; 3 BEGIN 4 select 'debalina' INTO cnt from dual; 5 DBMS_OUTPUT.PUT_LINE(to_char(cnt)); 6 EXCEPTION 7 WHEN Invalid_number THEN 8 DBMS_OUTPUT.PUT_LINE('error has occured inside main block'); 9 end; 10 / DECLARE * ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 4 SQL> DECLARE 2 cnt NUMBER(5):=0; 3 BEGIN 4 select 'debalina' INTO cnt from dual; 5 DBMS_OUTPUT.PUT_LINE(to_char(cnt)); 6 EXCEPTION 7 WHEN VALUE_ERROR THEN 8 DBMS_OUTPUT.PUT_LINE('error has occured inside main block'); 9 end; 10 / error has occured inside main block PL/SQL procedure successfully completed.
Your doubts regarding catch the exception in the exception block, you can run as below, by nesting a block Begin in the exception block itself.
SQL> DECLARE 2 cnt NUMBER(35):=0; 3 BEGIN 4 select 'debalina' INTO cnt from dual; 5 DBMS_OUTPUT.PUT_LINE(to_char(cnt)); 6 EXCEPTION 7 WHEN Value_error THEN 8 DBMS_OUTPUT.PUT_LINE('error has occured inside main block'); 9 Begin 10 cnt:='deba'; 11 Exception 12 WHEN OTHERS THEN 13 DBMS_OUTPUT.PUT_LINE('error has occured inside exception block'); 14 End; 15 END; 16 / error has occured inside main block error has occured inside exception block PL/SQL procedure successfully completed.
Hope your question is clear.
:)
Twinkle -
Continue the block after the exception management
The guys in the slot block.
create or replace procedure proc_case (p_in IN number) is begin case p_in when 1 then dbms_output.put_line('its one'); when 2 then dbms_output.put_line('its two'); end case; dbms_output.put_line('after the exception handler'); exception when case_not_found then dbms_output.put_line('its not found'); end;
When the procedure is executed as follows.
begin proc_case(3); end;
It shows the statement in the block of exception, but after that it does not run the statement following the exception handler and the outputs of the block, how can I execute the statement after the end case statement. I do not use the Else statement in case because I wanted to understand the logic of this block.
CREATE OR REPLACE
PROCEDURE proc_case
(
p_in in NUMBER)
IS
BEGIN
BEGIN
P_in CASE
WHEN 1 THEN
dbms_output.put_line ('the one');
WHEN 2 THEN
dbms_output.put_line ('two');
END CASE;
EXCEPTION
WHEN case_not_found THEN
dbms_output.put_line ("' its not found");
END;
dbms_output.put_line ("' after the exception handler");
END;
-
Unable to raise the exception in the update procedure
Hello
Here, I am unable to lift the exception:
create or replace procedure P_empNO1 (p_empno in emp.empno%type)
as
Start
Update emp set = 'k' where empno = p_empno ename;
exception
When no_data_found
then
dbms_output.put_line (' ' no data ');
end;
Thank you
Hello
It is not an SQL error when you update and if 0 rows are updated.
After the SQL is executed, you will have to get the count and if it's 0 then stripe your user defined exception.
IF SQL%ROWCOUNT = 0 THEN
RAISE no_update_err;
END IF;Thank you
-
AQ notification callback procedure does not. It's going to the exception queue
I use: Oracle Database 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production
I recorded in my prior queue of callback procedure, but it does not work once I recompiled the procedure according to the AQ$ _AQ_SRVNTFN_TABLE_1_F, It's going to the exception queue. How can I find why it is wrong to the exception queue?
Select * from SYS. USER_SUBSCR_REGISTRATIONS;
303 ""ALERT_Q" PLSQL://callbackEnqueueIndvl 57 FF 1 AQ DEFAULT DB REG 0 MAY 22, 14 12.17.05.375385000 PM - 04:00 Select * from AQ$ _AQ_SRVNTFN_TABLE_1_F by enq_time desc;
AQ _AQ_SRVNTFN_TABLE_1_E $ AAISqUAACAAAFh3AAQ F93D79F05F030F5DE043134C100A2FFE 0 3 MAY 22, 14 12.26.23.237482000 PM 3.20.92125 5 AQ_SRVNTFN_TABLE_Q_1 0 0 0 0 0 [SYS. [AQ$ _SRVNTFN_MESSAGE] PERSISTENT 0 0 2173603 Thank you.
Hello
Check if there is no qmon, j00 * follow-ups generated around the same period.
Thank you
Renu
-
The exception of DOM JmsAdapter analysis management
Hello
I am currently facing a problem with the behavior of the Jms adapter.
Whenever a JMS message is put in the queue, and the message is not XML valid, the Jms adapter (consumer) throw the exception "DOM Parsing Exception to the Exception translator".
It's fine, I understand that the message was not well-formed. But what is not fine is that the underlying BPEL is not instantiated: which means that I can't handle the exception properly.
Y at - there a way to force the Jms adapter not crashing on the analysis of DOM for the BPEL to be instantiated (and then be able to handle the exception it)?
Or is there a way to manage the error thrown by the Jms adapter itself? How?
I think that I have a workaround if there is no better option (if the two above questions cannot be decided) but I would rather not implement it since it will be a few extra steps / complexity.
> It would be to check the option "opaque schema native format" and then use a java embedded in order to decode the base64 string for finally parsing it.
Kind regards
Mathieu
Hi Mathieu,
Error messages before being assigned to the infrastructure of service are called rejects messages. For example, the Oracle file adapter selects a file with data in the CSV format and try to translate it into XML format (using NXSD). If there is a mistake in translation, the message is rejected and are not counted for the composite target.
You can create release managers to manage message errors. Message errors include those that occur during translation, incompatibility of correlation and analysis XML ID after receipt of the message.
Docs on how to do that are here...
http://docs.Oracle.com/CD/E28280_01/integration.1111/e10231/life_cycle.htm#CIAIICJJ
See you soon,.
Vlad
-
Management concept the exceptions that went wrong!
Well, this is by far the most embarrassing hack code I've done so far... but it works. I'm trying to run a select where if there is no data or null returned, place it in the value "v_pidm"and then let the action happen.» Pretty simple, right? Fake! A select statement returns no data that uses a function 'en' is an exception... "no data found". Oracle, it sends to the exception block as it should. Well, I don't want to stop and start my script a million times here, I added a Begin/End sub, with an exception to handle the error to say and perform an insert. I know that you should not use a State of exception for inserts another capture errors... you know bad practices and all. Any ideas as how to better manage the select statement that must regularly return no data? I was thinking some along the line of nvl (v_pidm, 0) or something, but I get errors.
set serveroutput ON SIZE 1000000 set heading off set feedback off set trimspool off set echo off set pagesize 0 set termout on Declare error varchar(255); v_pidm number(8); Begin Begin select distinct saraatt_pidm into v_pidm from saraatt, saradap where saraatt_appl_no = SARADAP_APPL_NO and saraatt_term_code = SARADAP_TERM_CODE_ENTRY and saraatt_pidm = 4; Exception when too_many_rows then error := SQLERRM; DBMS_OUTPUT.PUT_LINE(' %% Oracle Error! %% The select statement returned more than two rows '); when no_data_found then error := SQLERRM; DBMS_OUTPUT.PUT_LINE('Select Returned No Data . . . Therefore Insert new record for ' || v_pidm ); v_pidm := -999; when others then error := SQLERRM; DBMS_OUTPUT.PUT_LINE(' %% Oracle Error! %% An Error Occured ' || substr(error,5,20)); End; DBMS_OUTPUT.PUT_LINE('Pidm: ' || v_pidm); End;
There is nothing inherently wrong with code like
BEGIN SELECT column_name INTO l_variable_name FROM table_name WHERE some_where_clause; EXCEPTION WHEN no_data_found THEN l_variable_name := 0; END;
It is perfectly reasonable to have exception handlers that make anything other than newspaper an exception if they can in fact wisely handle the exception (e.g., you know that the query may return 0 rows and you know how to handle this case correctly).
You don't want an exception handler that simply calls to DBMS_OUTPUT. Put_line without re-raise the exception. It is a mistake to delay. And there is no real reason in this case to extract the SQLERRM in the variable error - it would be better to let the exception is propagated to the top so that you can see the full error stack.
Justin
-
Delete the exception management
Hi guys,.
I have a problem in my procedure. There are 3 parameters that I'm passing in the procedure. I am corresponding to these parameters to those of the table to delete one record at a time.
For example if I want to delete the record with the values (' '900682', 3, July 29, 2008 ') as parameters, it deletes the record of table, but still when I run it with the same parameters must show me an error message but it again says "deleted the request for transcript...". "Can you please help me with this?
PROCEDURE p_delete_szptpsr_1 (p_shttran_id IN saturn.shttran.shttran_id%TYPE,
p_shttran_seq_no IN saturn.shttran.shttran_seq_no%TYPE,
p_shttran_request_date IN saturn.shttran.shttran_request_date%TYPE) IS
BEGIN
DELETE FROM saturn.shttran
WHERE shttran.shttran_id = p_shttran_id
and shttran.shttran_seq_no = p_shttran_seq_no
and trunc (shttran_request_date) = trunc (p_shttran_request_date);
DBMS_OUTPUT. Put_line (' removed the transcript request Seq No. (' | p_shttran_seq_no | student (' | p_shttran_id |') for the requested date (' | p_shttran_request_date |'))) ') ;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT. Put_line (' error: the Notre Dame provided = student ID (' | p_shttran_id |))
('), Transcript No Request = (' | p_shttran_seq_no |) ('), Ask Date = (' | p_shttran_request_date | not found.');
END p_delete_szptpsr_1;
I have a SELECT statement to use NO_DATA_FOUND?A DELETE statement that will remove any line (such as an UPDATE statement that updates no line) is not an Oracle error. Oracle throws no exceptions.
If you want your code throws an exception, you will need to write this logic. You can throw an exception NO_DATA_FOUND yourself, i.e.
IF( SQL%ROWCOUNT = 0 ) THEN RAISE no_data_found; END IF;
If you go just to catch the exception, however, you could just some embedded code you would use to handle the exception in your IF statement, i.e.
IF( SQL%ROWCOUNT = 0 ) THEN <
> END IF; In your original code, your exception handler is just a statement of DBMS_OUTPUT. It is incredibly dangerous in real production code. You rely on the fact that the customer has allowed him to exit, that the customer has allocated a sufficient buffer, the user will see the message, and that the procedure will never be called to any piece of code that never worry if it succeeded or failed. There are very few situations where those who are sure of things to build on.
Justin
-
Why out of the loop after a managed exception is thrown
I am trowing a custom exception inside a nested for loop. The execption notes, however, both the inner and outer loop output once the exception is thrown. I tried to add a continue statement, but that has not solved the problem.
Jet moves execution of capture, closing the loop. You can send a cancelable event instead.
-
Hi all
I wrote a simple exception in the procedure.
I say if this procedure worked for a very long time and I decided to kill the process, the exception will manage these unexpected process
for example, coding,.
Begin
.
.
EXCEPTION when others then
dbms_out.put_line ('unexpected end');
end;TJ_Tay wrote:
Hi allI wrote a simple exception in the procedure.
I say if this procedure worked for a very long time and I decided to kill the process, the exception will manage these unexpected process
for example, coding,.Begin
.
.
EXCEPTION when others then
dbms_out.put_line ('unexpected end');
end;I guess you mean kill the session when you say that you kill it... in which case, NO, the exception handler does capture because the session has ended.
In addition, an exception WHEN OTHERS is not a good idea because it often masks the exceptions that you were not pregnant.You're just write exception handlers for things that you expect to arrive.
-
Set the error code for the exception qualified using the pragma exception_init
Hello
I did experiments on exception management in oracle plsql. In my experiments, I did the following anonymous plsql block.
+ < < outer_block > > +.
declare
+ exceptions. +
Start
+ < < inner_block > > +.
+ State +.
+ exceptions. +
+ start +.
+ recovery outer_block.exc +;
+ exception +.
+ What then outer_block.exc +.
+ dbms_output.put_line ("' outdoor Exception caught"); +
+ What then inner_block.exc +.
+ dbms_output.put_line ("'Inner Exception caught"); +
+ end; +
end;
When I run the code, I got the output "external Exception caught".
------------------------------------------------- PLSQL Block 2 -------------------------------------------
I changed the code a little differently by assigning exceptions error codes.
+ < < outer_block > > +.
declare
+ exception exc; +
+ pragma exception_init (exc,-20001); +
Start
+ < < inner_block > > +.
+ State +.
+ exception exc; +
+ pragma exception_init (exc,-20001); +
+ start +.
+ raise_application_error (-20001, "Error"); +
+ exception +.
+ What then outer_block.exc +.
+ dbms_output.put_line ("' outdoor Exception caught"); +
+ What then inner_block.exc +.
+ dbms_output.put_line ("'Inner Exception caught"); +
+ end; +
end;
When I run the above code, I got the following error.
Error on line 1
ORA-06550: line 15, column 9:
PLS-00484: exceptions redundant "EXC" and "EXC" must appear in the same exception handler
ORA-06550: line 5, column 1:
PL/SQL: Statement ignored
Script done on line 21.
------------------------------------------------- PLSQL Block 3 -------------------------------------------
To avoid this error, I changed the code again by qualifying exceptions with their block names. This time, I got a different error.
+ < < outer_block > > +.
declare
+ exception exc; +
+ pragma exception_init (outer_block.exc,-20001); +
Start
+ < < inner_block > > +.
+ State +.
+ exception exc; +
+ pragma exception_init (inner_block.exc,-20001); +
+ start +.
+ raise_application_error (-20001, "Error"); +
+ exception +.
+ What then outer_block.exc +.
+ dbms_output.put_line ("' outdoor Exception caught"); +
+ What then inner_block.exc +.
+ dbms_output.put_line ("'Inner Exception caught"); +
+ end; +
end;
Error on line 1
ORA-06550: line 4, column 38:
PLS-00103: encountered the symbol ". «» When expecting one of the following values:
), = >
The symbol"were replaced by". "to continue.
ORA-06550: line 9, column 42:
PLS-00103: encountered the symbol ". «» When expecting one of the following values:
), = >
The symbol"were replaced by". "to continue.
Question:
Pourraient several exceptions with the same name of the exception defined in the set of nested blocks plsql assign error codes using the pragma EXCEPTION_INIT? If there are errors in the PLSQL 2 blocks and 3, please suggest.
If the same thing could be accomplished by other methods, please explain.The problem in your code block 2 is that you have not only used the same name of the exception, but you have assigned them with the same exception code. If the code is different so it will work...
SQL> set serverout on SQL> ed Wrote file afiedt.buf 1 <
> 2 declare 3 exc exception; 4 pragma exception_init(exc,-20001); 5 begin 6 < > 7 declare 8 exc exception; 9 pragma exception_init(exc,-20002); 10 begin 11 raise_application_error(-20002,'Error raised'); 12 exception 13 when outer_block.exc then 14 dbms_output.put_line('outer Exception caught ' ); 15 when inner_block.exc then 16 dbms_output.put_line('Inner Exception caught ' ); 17 end; 18* end; SQL> / Inner Exception caught PL/SQL procedure successfully completed. SQL> ed Wrote file afiedt.buf 1 < > 2 declare 3 exc exception; 4 pragma exception_init(exc,-20001); 5 begin 6 < > 7 declare 8 exc exception; 9 pragma exception_init(exc,-20002); 10 begin 11 raise_application_error(-20001,'Error raised'); 12 exception 13 when outer_block.exc then 14 dbms_output.put_line('outer Exception caught ' ); 15 when inner_block.exc then 16 dbms_output.put_line('Inner Exception caught ' ); 17 end; 18* end; SQL> / outer Exception caught PL/SQL procedure successfully completed. -
Can handle us the exceptions of pre defined?
Hi people,
I have a simple stored procedure in oracle 9i with the following code.
create or replace procedure psam1 (no int) is
a number;
b the number;
exception of e;
v varchar (10);
Start
Select sal in a sample, when sno = no;
Select count (*) from b to sample, when sno = no;
If b > 1 then
raise the e;
elsif a > 1000 then
v: = "PASS";
on the other
v: = "FAIL";
end if;
dbms_output.put_line (v);
exception
When e then
raise_application_error ("-20002, ' MULTIPLE RECORDS EXISTS");
end;
My question is if I want to handle the exception
«ORA-01422: exact fetch returns more than number lines.»
If my extraction retrieves several lines so e Exception should be raised.but can manage us these predefined exceptions?Hi Vids,
As already said, yes you can.
But there are a few misunderstandig in your code. If indeed you have ORA-01422, then select will never run, given that the first trigger.
You code might be as simple as this:
create or replace procedure psam1(no int) is a number; v varchar(10); begin select sal, case sign(sal -1000) when 1 then 'PASS' else 'FAIL' end into a, v from sample where sno = no; dbms_output.put_line(v); exception when no_data_found -- Predefined exception for ORA-00001 then do_some_thing; -- Perhaps, just raise; when too_many_rows -- Predefined exception for ORA-01422 then do_another_thing; -- Perhaps, just raise; end;
As you can see ORA-01422 is predefined (TOO_MANY_ROWS), read more about these here [predefined PL/SQL Exceptions | http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/errors.htm#insertedID4]
If you choose just to (re) - throw the exception, then you must omit this exception handler.
Concerning
Peter -
How do I access the password for Lightning Manager?
Hello, all.
I'm trying to connect my lightning calendar to google calendar using CalDav.
I'm following the procedure described in this guide: http://www.technorms.com/7955/sync-google-yahoo-windows-live-calendars-thunderbirds-lightning
I got to a point where I entered my google username and password.
But the calendar does not load.
So I thought that the problem is that I entered my user name for google as "username", not "[email protected]".
Then I tried to change it, I deleted the calendar I made and then tried the process again.
But I had saved the username and the password in "Password manager"My question is how to access the password manager? And then how to remove this info so it is no longer stored? So, I try again, the process of "[email protected]" instead of "username" when you are prompted for authentication by google's step in the instructions above.
Thank you!
The URL of the calendar in the article you mentioned is exceeded.
Check this blog and follow the instructions.
https://blog.Mozilla.org/calendar/2013/09/Google-is-changing-the-location-URL-of-their-CalDAV-calendars/The lightning is not a separate password manager. Follow these instructions for the removal of the existing passwords.
http://KB.mozillazine.org/Setting_and_changing_email_passwordsAlso, be sure to allow cookies for google.com.
Maybe you are looking for
-
Air screensavers do not graduate
I had ATV download all air screensavers long ago and set to check every day for new, but it seems that it is always cycling only through the same 2 or 3 each time. Is this normal? How many are there in total? Anything I can do to force ATV to change
-
HP Deskjet 2050 printer will not print black ink!
Hello.. I have a Deskjet 2050 All in One Printer, and recently it has stopped printing in black ink (colors work well). I changed the black ink cartridge, but that did not help... Don't know what's wrong or what to do... Help, please
-
In Hotmail, is it possible to delete a folder custom (the one I created)?
I don't know exactly this is considered as the Ant of Windows but hotmail is Windows live
-
What Dock is compatible with the W500 4058-CTO?
Looking for a compatible dock is frustrating. I couldn't find a salesperson to speak of either. Can anyone point a Canadian source to get the right model for my W500? Thanks in advance. Shawn
-
Conversion of Wav and mp3 to WMA lossless?
Hello. I have been using Windows Media Player 11 on XP Home edition 32 bit and Vista Home Premium 32 and 64-bit. I'm not sure is WMP 12 is different from 11. iTunes converts files... I can rip cd to mp3, Wav and WMA Lossless. It's ok. -How can I conv