Mutex in the oracle stored procedure... How to get there?
Hello
I have the series of insert/update statements in an oracle stored procedure. The stored procedure is called composite Oracle SOA.
The procedure works like this:
a. download a request and checks to see if the file is already in the database. If she's here, we update, elsewhere insert.
b. that I check for 10 tables and make the necessary inserts/updations.
But sometimes, when I get the huge volume of transactions in the stored procedure, I see this violation of unique constraint violated due to lack of appropriate controls to ensure that no other parallel forum is trying to update the same record.
How to do this so that no two execution of stored procedure doesn't work on the same record in the same table?
Thank you!!
Hello
you might consider something like this
create table t1( id number primary key, action varchar2(10), who varchar2(10) ) ; declare p_id number := 1; p_action varchar2(10) := 'Insert'; p_who varchar2(9) := 'Session 1'; -- procedure update_t1(p_id number, p_action varchar2, p_who varchar2) is begin update t1 set action = p_action, who = p_who where id = p_id; end; begin -- try to insert or update row for PK p_id merge into t1 d using ( select p_id id, p_action action, p_who who from dual ) s on (d.id = s.id) when matched then update set d.action = 'Update', d.who = s.who when not matched then insert values (s.id, s.action, s.who) ; exception when dup_val_on_index then -- insert is no option, update when lock is released update_t1(p_id, 'Update', p_who); end; / drop table t1 purge ;
Scenario (two sessions trying to insert/updated updated for id 1):
session 1 inserts ("1" "insert" "Session 1") and the data is not visible to the session 2
session 2 inserts same id but crashes because of the locking session 1
validation of the session 1
session 2 insert fails but who manages updating instead
session 2 commits, values for the id 1 is now ('1' 'Update' "Session 2")
Tags: Database
Similar Questions
-
SSL mutual authentication using the Oracle stored procedure
Hello
DB version:
Oracle Database 11 g Enterprise Edition Release 11.2.0.1.0 - 64 bit Production
Is possible to perform mutual authentication SSL uses the Oracle stored procedure?
I read articles and forums saying that it is not a good approach to call the Web service using the Oracle procedure (and I don't know if it's even possible authentication using procs). But I would like to know if it's possible and how.
In other is words there a way to incorporate the client certificate information into a procedure that calls a Web service.
I read the articles to do it in JAVA or .net. But please advice how we can achieve using Oracle procedures.
Thank you.934451 wrote:
Is possible to perform mutual authentication SSL uses the Oracle stored procedure?
To learn more. SSL what for?
Oracle PL/SQL only supports client standard TCP sockets. However, interface for HTTP, Oracle PL/SQL also supports HTTPS - which requires the certificates of authentication of the server to be stored in a portfolio of Oracle web and used during the transmission via HTTPS. See the code example {message identifier: = 1925297} for more details.
I read articles and forums saying that it is not a good approach to call the Web service using the Oracle procedure (and I don't know if it's even possible authentication using procs).
Forums and articles written by idiots. For idiots.
And no, I'm not to embellish my response to this pitch that you met. It is false. It is written by ignorant people who don't know ANYTHING about the use of Oracle and PL/SQL. And feel free to forward my response to these idiots. They find me here if they want to argue...
As an example of how to call a web service, see {message identifier: = 10158148} and {message: id = 10448611}.
-
Pass an array of bytes to the oracle stored procedure
I have a problem with moving from byte array in Oracle stored procedure as an input parameter by using odp.net.
Here is the signature of the stored procedure:
SOMEPROCEDURE(session IN NUMBER, data IN RAW)
Here is c# code, which calls the procedure:
var cmd = new OracleCommand("SOME_PROCEDURE", _connection);
cmd.CommandType = CommandType.StoredProcedure;
var bt = new byte[]{1,68,0,83,128,1};
OracleParameter sessionId = new OracleParameter("dbSessionId", OracleDbType.Decimal, new OracleDecimal(_dbSessionId), ParameterDirection.Input);
OracleParameter data = new OracleParameter("statusData", OracleDbType.Raw, new OracleBinary(bt), ParameterDirection.Input);
cmd.Parameters.Add(sessionId);
cmd.Parameters.Add(data);
cmd.ExecuteNonQuery();
This code does not (stored procedure throws exception, which cannot receive), because in byte array hadou number 128!, if I display 128 on another number, minus 128, it works great!
What should I do?
After some tests I found the solution. Initially, you cannot switch to the array of bytes via the odp.net stored procedure, if the table contains 127 large values.
Yes, solution: 1. create the wrapper procedure
procedure SOME_PROCEDURE_WRAPPER (p_session_id in number, p_data in varchar2)
is v_data raw(1024);
rawdata raw(1024);
rawlen number;
hex varchar2(32760);
i number;
begin
rawlen := length(p_data);
i := 1;
while i <= rawlen-1
loop
hex := substrb(p_data,i,2);
rawdata := rawdata || HEXTORAW(hex);
i := i + 2; end loop;
SOME_PROCEDURE(p_session_id , rawdata);
end;
2 then need to modify the code c# in this way:
var cmd = new OracleCommand("SOME_PROCEDURE_WRAPPER", _connection);
cmd.CommandType = CommandType.StoredProcedure;
string @string = statusData.ToHexString();
OracleParameter sessionId = new OracleParameter("dbSessionId", OracleDbType.Decimal, new OracleDecimal(_dbSessionId), ParameterDirection.Input);
OracleParameter data = new OracleParameter("statusData", OracleDbType.Varchar2,@string.Length, new OracleString(@string), ParameterDirection.Input);
cmd.Parameters.Add(sessionId);
cmd.Parameters.Add(data);
cmd.ExecuteNonQuery();
where
public static string ToHexString(this byte[] bytes)
{
if(bytes == null || bytes.Length == null)
return string.Empty;
StringBuilder hexStringBuilder = new StringBuilder();
foreach (byte @byte in bytes)
{
hexStringBuilder.Append(@byte.ToString("X2"));
}
return hexStringBuilder.ToString();
}
-
Use the utilities from the Oracle stored procedure
Hi all
I use Oracle Import to load the data from .dmp file to Oracle table.
Test/test leader IMP = Data .dmp fromuser = user1 touser = test tables = emp
But my requirement is to create a stored procedure that will import data into the table and identify the number of loaded records and how impossible to import.
Can I keep inside the procedure import statement?
Thank you.No, not possible.
IMP is an exe like sql more who can evoke to the command prompt.
If you need all the actions on the imported... table export for example/test table, and then go further.
-
Run the oracle stored procedure in CF8
I'm running a procedure like this.
< cfstoredproc procedure = "GetAction" datasource = "test_DSN" >
< cfsqltype cfprocparam dbvarname "actionId" = "CF_SQL_INTEGER" = type = "en" value = "1" >
< name cfprocresult = resultset 'actions' = '1' >
< / cfstoredproc >
and my stored procedure in oracle.
create or replace function GetAction (actionId IN ACTION.ID%TYPE)
OPERATION RETURN % ROWTYPE
IS
actions
ACTION % ROWTYPE;
Start
Select *.
IN actions
Action WHERE ID = actionId.
RETURN operations;
GetAction end;
then I get the error message like:
ORA-01008: not all variables
Please help me on this.
ThanxIf you want to return a result set (result of a query) of your PL/SQL, you will have to do what Daverms suggested and your function to convert a procedure and a cursor reference to return your result set. Your procedure should be contained in a package so that you can declare a ref cursor "globally" to make it accessible by CF.
Oh, and don't forget to change your parameter for cfstoredproc procedure to add the name of the package for the proc name.
Phil
-
Help the Oracle stored procedure
I call result4 front end and itranno now, I want to call from back end that wt i hv 2 do.
I want to find the Maximum iTranno of this profilebasicdetail
Create or replace procedure Insert_profilebasicdetail(result1 in NUMBER,result in NUMBER,*result4* in)
NUMBER)
As
v_IncKeyID NUMBER;
v_tempkeyId NUMBER;
CURSOR TempInsert IS
SELECT ikeyid, iprofileid, iquestionid, vquestionans, cstatusindi, dmodifyon, imodifyby, iyear, isubprofileid
OF profilebasicdetail
WHERE isubprofileid = result and itranno = * result4 *;
BEGIN
SELECT MAX (NVL(iKeyID,0))
IN v_IncKeyID
OF profilebasicdetail;
FOR r in TempInsert LOOP
v_IncKeyID: = v_IncKeyID + 1;
Insert into profilebasicdetail
(ikeyid, iprofileid, iquestionid, vquestionans, cstatusindi, dmodifyon, imodifyby, itranno, iyear, isubprofileid)
Select v_IncKeyID, r.iprofileid, r.iquestionid, r.vquestionans,
r.cstatusindi, r.dmodifyon, r.imodifyby, 1.
r.iYear, result1
of profilebasicdetail
where ikeyId = r.ikeyId;
END LOOP;
EXCEPTION
WHILE others THEN
lift;
End;Hello
Create or replace procedure Insert_profilebasicdetail(result1 in NUMBER,result in NUMBER,result4 in)
NUMBER)
As
v_IncKeyID NUMBER;
v_tempkeyId NUMBER;CURSOR TempInsert IS
SELECT ikeyid, iprofileid, iquestionid, vquestionans, cstatusindi, dmodifyon, imodifyby, iyear, isubprofileid
OF profilebasicdetail
WHERE isubprofileid = result and itranno = (select max (itranno)
of profilebasicdetail);BEGIN
SELECT MAX (NVL(iKeyID,0))
IN v_IncKeyID
OF profilebasicdetail;FOR r in TempInsert LOOP
v_IncKeyID: = v_IncKeyID + 1;
Insert into profilebasicdetail
(ikeyid, iprofileid, iquestionid, vquestionans, cstatusindi, dmodifyon, imodifyby, itranno, iyear, isubprofileid)
Select v_IncKeyID, r.iprofileid, r.iquestionid, r.vquestionans,
r.cstatusindi, r.dmodifyon, r.imodifyby, 1.
r.iYear, result1
of profilebasicdetail
where ikeyId = r.ikeyId;
END LOOP;-Maximum Tranno
Select max (itranno)
in result4
of profilebasicdetail;EXCEPTION
WHILE others THEN
lift;
End;-Pavan Kumar N
-
creation of report editor BI by oracle stored procedure
Hello
can someone provide me steps to create BI publisher report using the oracle stored procedure.
Thank you
SriThe sql in pipeline table function to return the dataset returned by the procedure in the form of a table.
Take a look at the following:
http://bipublisher.blogspot.com/2007/10/bi-Publisher-taking-it-to-next-level.html
http://winrichman.blogspot.com/search/label/pipelined
BI publisher to use the stored procedureThank you
BIPuser -
How to migrate from MySQL to Oracle stored procedure
Hi all
I've migrated mysql 5.1.42 - enterprise-gpl-advanced DB for oracle sqldeveloper 3.1.07 tool.
DB objects migrate successfully except stored procedures.
I checked .sql and files... Capture process not captured SQL stored procedures.
Could you please suggest where I can check correct error or how to fix this.
Thanks in advance.
Hello
SQL * Developer version you use is an old and you must use the latest version available from this link.
However, even the v4 version does not support the migration of procedures stored as stated in this link - MySQL
http://www.Oracle.com/technetwork/developer-tools/SQL-Developer/supportedmigplatforms-086703.html
You will need to manually convert the MySQL in Oracle format, stored procedures since even the "Scratch Editor" under "tools - migration '-doesn't have an option for MySQL conversion.
The documentation includes details of the difference between MySQL and Oracle stored procedures-
Oracle SQL Developer information for the migration of MySQL®
in chapter Triggers and procedures stored
Kind regards
Mike
-
Oracle stored procedure in the reports
Hello
How can I call oracle stored procedure in Oracle reports. The procedure takes a variable of type object and as a parameter out.
Thank you
GroultCreate a package in your report and set a variable of this type of object in the package body.
Write a procedure in your package that checks if your variable is empty, and if this is the case, call your db-procedure to fill the variable.
For each value that you want to display in your report, create a functioncolumn that calls the formlery procedure written in your package and then returns the requested of your object type value. In the available build ontop the columns function created fields. -
How to call oracle stored procedure with hibernate
Hi all
I wrote the following stored procedure:
create or replace
PROCEDURE SP_GET_NUMBER (p_cursor sys_refcursor, departmentId in number, userId in number, documentTypeId number)
as
Enter the integer;
sqlScript varchar2 (60);
Start
sqlScript: = "select registrationnumber_seq.nextval from dual;
immediately run sqlScript in register;
dbms_output.put_line ('Nextval is: ' |) To_char (Regid));
insert into roketsanuser.registrationnumbers
(id, departmentid, documenttypeid, number, registrationstatus, status, updatedate, updateuserid, version)
values
(enter it, null, null, enter it, 0, 0, sysdate, 0, 0);
commit;
Open the p_cursor for
Select id
roketsanuser.registrationnumbers® systems
where reg.id = regid;
end;
And I define in the annotations in my entity class:
@Entity (name = "Number")
@Table (name = "REGISTRATIONNUMBERS")
@SequenceGenerator (name = "REGISTRATIONNUMBER_SEQ", sequenceName = "REGISTRATIONNUMBER_SEQ")
@org.hibernate.annotations.NamedNativeQuery (name = "SP_GET_NUMBER", query = "{call? "{= SP_GET_NUMBER (: departmentId,: userId,: documentTypeId)}"
Callable = true, readOnly = true, resultClass = RegistrationNumber.class)
@EntityListeners ({BaseEntityListener.class})
Number/public class extends BaseEntity
I call the query in my Dao class:
public number getNumberForIncomingPaperworkByStoredProcedure (EntityManager Manager, number number)
{
A session = (Session) manager.getDelegate ();
query org.hibernate.impl.SQLQueryImpl = (SQLQueryImpl) session.getNamedQuery ("SP_GET_NUMBER");
query.setParameter ("departmentId", ObjectUtil.isNotNull (registrationNumber.getDepartment ())? registrationNumber.getDepartment () .getId (): "");
query.setParameter ("userId", ObjectUtil.isNotNull (registrationNumber.getUser ())? registrationNumber.getUser () .getId (): "");
query.setParameter ("documentTypeId", ObjectUtil.isNotNull (registrationNumber.getDocumentType ())? registrationNumber.getDocumentType () .getId (): "");
Collection list = query.list ();
return new RegistrationNumber();
}
But when I run the application exception occurred:
< 01/02/2013 10:04:24 EET > < opinion > < Stdout > < BEA-000000 > < hibernation:
/ * name of SP_GET_NUMBER native SQL query * / {call? = SP_GET_NUMBER (?,?,?)} >
< 01/02/2013 10:04:27 EET > < opinion > < Stdout > < BEA-000000 > < 10:04:27, 811 ERROR [IncomingPaperworkMBean] EJB Exception:; nested exception is:
org.hibernate.exception.SQLGrammarException: could not execute the query. nested exception is: org.hibernate.exception.SQLGrammarException: could not execute the query >
This is perhaps the reason why, please help me?
Thanks in advanceMessage to research in syntax of:
@org.hibernate.annotations.NamedNativeQuery
It seems that following is a possible cause (but I'm not sure about this one):
Query = "{call?" "{= SP_GET_NUMBER (: departmentId,: userId,: documentTypeId)} '.
You can change this:
Query = "(?)". (= appeler SP_GET_NUMBER (: departmentId,: userId,: documentTypeId)) "...
or
Query = "(call SP_GET_NUMBER (: departmentId,: userId,: documentTypeId)).
and check if that helps...
You can take a look at:
https://Forum.Hibernate.org/viewtopic.php?p=2401604
HTH,
Bravo!
AJ -
Apex. Submit->; process to run one of the two stored procedures on page
version: 4.2.5
page one region: form on the stored procedure
region of page two: form on the stored procedure
The region button 'submit' for the region page 2:
ACTION: Redirect URL
Run Validations: YES
Target URL: javascript:apex.submit ('CALL_MY_PROC');
'Treatments' execute the stored procedure
Point process: submit now - after calculations and Validations
Enforcement process: once a Page visit (by default)
...
Conditions
When you press the button:-no Condition button
Condition type: request = Expression 1
Expression 1: REQUEST = CALL_MY_PROC
The expected behavior is to call the stored procedure in the region on two page without invoking the other stored procedure. Separation of concerns is desired, this button sends the form this proc, this button argues that form to this proc. Nor should call each other, so to speak.
The stored procedure is not called when I click 'Submit' (button from region to region page two). How can I solve this?
Thanks in advance for any guidance.
-abe
Solution: the status... are not REQUEST =
-abe
-
Re: "insufficient privileges" error when you run the Java stored procedure in another schema
I get an "insufficient privileges" error when you run the Java stored procedure in another schema, see details below. I don't know what are missing privileges (I already granted the EXECUTE privilege), suggestions? -Thank you.
Define a simple java class and deploy it as a Java stored procedure to test:
Schema: User1
test of the package;
public class HelloWorld {}
public HelloWorld() {
Super();
}
public static String Hello () {}
Return "HELLO";
}
}
CREATE or REPLACE FUNCTION HELLO RETURN VARCHAR2 AUTHID CURRENT_USER AS LANGUAGE JAVA NAME ' test. HelloWorld.hello () return java.lang.String';
Grant execute on USER2 HELLO
Test the Java stored procedure through the PL/SQL function call (in the same schema):
Schema: User1
SET SERVEROUTPUT ON
DECLARE
v_Return VARCHAR2 (200);
BEGIN
v_Return: = User1. HELLO;
DBMS_OUTPUT. Put_line ('v_Return =' | v_Return);
END;
anonymous block filled
v_Return = HELLO
Test the Java stored procedure through the PL/SQL function call in a different pattern:
Schema: USER2
SET SERVEROUTPUT ON
DECLARE
v_Return VARCHAR2 (200);
BEGIN
v_Return: = User1. HELLO;
DBMS_OUTPUT. Put_line ('v_Return =' | v_Return);
END;
Error report-
ORA-01031: insufficient privileges
ORA-06512: at "User1." HELLO', line 1
ORA-06512: at line 4 level
01031 00000 - "insufficient privileges".
* Cause: An attempt was made to change the user name or password
without the privilege appropriate. This error also occurs if
trying to install a database without the need for employment
access privileges.
When Trusted Oracle is configure in DBMS MAC, this error may occur
If the user has been granted the privilege necessary for a higher label
that the connection is active.
* Action: Ask the database to perform the operation or grant administrator
the required privileges.
For users Trusted Oracle get this error, well that granted the
the privilege that is suitable for the top label, ask the database
administrator to grant the privilege to the appropriate label.
You have created the function with AUTHID CURRENT_USER, which means that the function is executed with the rights of the applicant (but not with the rights of the author). This means that the applicant must have grants (directly or through roles) on all used/accessible objects in the service. In your case the user USER2 has not granted with EXECUTE on the class/source Java test. Class HelloWorld, causing the ORA-01031 exception. You create service without AUTHID CURRENT_USER (i.e. with AUTHID DEFINE, which is by default, if you do not have a specific reason to use AUTHID CURRENT_USER) or grant EXECUTE on JAVA test SOURCE. Class HelloWorld to User2.
Dimitar
-
JPA with Oracle stored procedure: setting IN or OUT to missing index: 1
Hello
I'm going to have bad configure integration between Oracle stored procedure (which returns a cursor) and the Parliamentary Assembly joint.
Stored procedure
CREATE OR REPLACE PROCEDURE GET_ACCOUNTS_TEST
(
l_cursor on sys_refcursor
)
AS
BEGIN
L_cursor OPEN for SELECT * FROM ACCOUNTS_TEST ORDER OF ACCOUNT_NAME.
END GET_ACCOUNTS_TEST;
Oracle bean
@Entity
@NamedNativeQueries({)
@NamedNativeQuery (name = "getAccountsSP", query = "{GET_ACCOUNTS_TEST (?) call} "(, resultClass = Account.class)"
})
@Table (name = "ACCOUNTS_TEST")
Account/public class implements Serializable {}
.....
}
ManagedAccountBean
public Collection < account > getAccountsSP() {}
EntityManager em = jpaResourceBean.getEMF () .createEntityManager ();
try {}
Query query = em.createNamedQuery ("getAccountsSP");
(Collection < account >) return query.getResultList ();
} {Finally
EM. Close();
}
}
Get this error
Exception [EclipseLink-4002] (Eclipse - 2.4.0.v20120608 persistence Services - r11652): org.eclipse.persistence.exceptions.DatabaseException
Inner exception: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in the call to 'GET_ACCOUNTS_TEST '.
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Error code: 6550
Call: {call GET_ACCOUNTS_TEST (?)}
link = > [null]
Query: ReadAllQuery (name = "getAccountsSP" referenceClass = sql = "{call GET_ACCOUNTS_TEST (?)}" account)
Any ideas? I can get the code to use a query in the code, but not via. an AP
Thank youThe exception occurs because you said JPA to pass a parameter, but it is not expected the stored procedure. Try to change your definition of stored proc in a cursor output variable that can be used in your JPA query to return the cursor. An example is here:
http://wiki.Eclipse.org/EclipseLink/examples/JPA/StoredProceduresBest regards
Chris -
Call a java class in my database to an oracle stored procedure oracle
my oracle stored procedure is:
create or replace
PROCEDURE openpdffile
IN THE JAVA LANGUAGE
NAME 'pdfopenbook.mainbook () ';
It is valid and so is the java class;
import java.sql. *;
Oracle.jdbc import. *;
public class pdfopenbook //class pdfopen
{
Public Shared Sub mainbook (args [] //main function) of channels
{
try try statement
{
Runtime.getRuntime () .exec ("rundll32 url.dll, FileProtocolHandler" + "c:\\temp
final_book.pdf");
Runtime.getRuntime () .exec ("rundll32 url.dll, FileProtocolHandler" + "sol.exe");
} catch (Exception e) //catch all exceptions here
{
System.out.println ("Error" + e); printing error
}
}
}
but I get the error:
onnecting to the caprs of the database.
ORA-29531: no mainbook method in the pdfopenbook class
ORA-06512: at "CAPRS. OPENPDFFILE', line 1
ORA-06512: at line 2
Process is complete.
The caprs database disconnection.
He said that there is no mainbook method, but there is, what I am doing wrong?
Thank you
DougPass the String [] as an argument to mainbook():
create or replace PROCEDURE openpdffile AS LANGUAGE JAVA NAME 'pdfopenbook.mainbook(java.lang.String[])';
Do you have posted on the forum of the database?
Kind regards
Nick
-
call to a java class of an oracle stored procedure
my oracle stored procedure is:
create or replace
PROCEDURE openpdffile
IN THE JAVA LANGUAGE
NAME 'pdfopenbook.mainbook () ';
It is valid and so is the java class;
import java.sql. *;
Oracle.jdbc import. *;
public class pdfopenbook //class pdfopen
{
Public Shared Sub mainbook (args [] //main function) of channels
{
try try statement
{
Runtime.getRuntime () .exec ("rundll32 url.dll, FileProtocolHandler" + "c:\\temp\\final_book.pdf");
Runtime.getRuntime () .exec ("rundll32 url.dll, FileProtocolHandler" + "sol.exe");
} catch (Exception e) //catch all exceptions here
{
System.out.println ("Error" + e); printing error
}
}
}
but I get the error:
onnecting to the caprs of the database.
ORA-29531: no mainbook method in the pdfopenbook class
ORA-06512: at "CAPRS. OPENPDFFILE', line 1
ORA-06512: at line 2
Process is complete.
The caprs database disconnection.
He said that there is no mainbook method, but there is, what I am doing wrong?
Thank you
Doughttp://wiki.answers.com/Q/Can_you_call_a_java_function_from_an_oracle_stored_procedure
Maybe you are looking for
-
Why can't remove a bookmark by using right click more method
Until a few days ago I was able to make a small variety of different tasks when I would click RIGHT in bookmarks (in the upper-left hand corner of my screen). But now when I right click all is a clear gray color and I am unable to perform the tasks.
-
Quiero discos, pero los esoty utilizando is set encryptar, habra alguna forma hacerlo, of no ser posible esto lo tengo planeado hacer, tengo bahia 1-2-3 ocupadas por 3 to discos, esto're lo that is me ha light hacer in caso of Quebec don't is you can
-
Brightness automatically adjusts even when auto brightness is DISABLED
The brightness in my note of k4 lenovo automatically even when the auto brightness is OFF. Please help me because I have never encountered this problem before. I'm on A7010a48_S150_160219_ROW
-
HP Envy 1440t h8: update the network map
I bought my desire Desktop 3 years at hp store. Now, I would switch my network card because I got a new 802.11ac router. My office has integrated Bluetooth 4.0 and dual 802.11a/b/g/n wireless LAN band (2.4 Ghz and 5 GHz) featuring MIMO 2 x 2 technolo
-
It's in my junk e-mail folder. Why is this email in your junk mail folder? Microsoft SmartScreen classified this as spam. I find it rather ridiculous. Why Microsoft Security would identify their own message as spam? A customers need to know? It see