473,836 Members | 1,585 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

fetch data from output parameter of a store procedure

Hi everyone,
I wrote a store procedure that fetch one row data in the database based on
the parameter value I entered. After I created the store procedure,
the store procedure code looks like this:
ALTER proc getProductCommS cale @product As varchar(30), @TISCommRate As
Decimal(5,2) OUTPUT,
@BrokerCommRate As Decimal(5,2) OUTPUT, @Fee As Decimal(5,2) OUTPUT
As
if RTRIM(@product) ='Imed'
Select @TISCommRate=TI SComm, @BrokerCommRate =BrokerComm, @Fee=Fee
from tis_productComm Scale where ProductName='Im ed'
select @TISCommRate , @BrokerCommRate , @Fee
Return
an dthen I tested in the database with the following code:
Declare @TISCommRate As Decimal(5,2)
Declare @BrokerCommRate As Decimal(5,2)
Declare @Fee As Decimal(5,2)
exec getProductCommS cale 'Vusa',@TISComm Rate, @BrokerCommRate , @Fee
Then I got the following data:
..35 .20 5.00

But it seems not working in asp.net(1.1), here is part of my .net coding:
Dim sqlConnection As SqlConnection = New
SqlConnection(C onfigurationSet tings.AppSettin gs(Global.CfgKe yConnString))
Dim myCommand As SqlCommand = New
SqlCommand("Get ProductCommScal e", sqlConnection)

myCommand.Comma ndType = CommandType.Sto redProcedure
Dim pProduct As SqlParameter = New SqlParameter("@ Product",
SqlDbType.VarCh ar, 30)
pProduct.Value = product
myCommand.Param eters.Add(pProd uct)

Dim pTisCommRate As SqlParameter = New
SqlParameter("@ TISCommRate", SqlDbType.Decim al)
pTisCommRate.Pr ecision = 5
pTisCommRate.Sc ale = 2
pTisCommRate.Di rection = ParameterDirect ion.Output
myCommand.Param eters.Add(pTisC ommRate)

Dim pBrokerCommRate As SqlParameter = New
SqlParameter("@ BrokerCommRate" , SqlDbType.Decim al)
pBrokerCommRate .Precision = 5
pBrokerCommRate .Scale = 2
pBrokerCommRate .Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pBrok erCommRate)

Dim pFee As SqlParameter = New SqlParameter("@ Fee",
SqlDbType.Decim al)
pFee.Precision = 5
pFee.Scale = 2
pFee.Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pFee)

sqlConnection.O pen()
Dim reader As SqlDataReader = myCommand.Execu teReader()

Dim TisCommRate As Decimal = Convert.ToDecim al(pTisCommRate .Value)

But somehow I always get nothing from pTisCommRate.Va lue, same to the other
parameters. What's going on? I am just learning to get data from output
parameters, did I miss anything?

--
Betty
Aug 29 '06 #1
6 2737
Sorry, I use the wrong one: exec getProductCommS cale 'Vusa',@TISComm Rate,
@BrokerCommRate , @Fee
Acutally I mean exec getProductCommS cale 'Imed,@TISCommR ate,
@BrokerCommRate , @Fee

--
Betty
"c676228" wrote:
Hi everyone,
I wrote a store procedure that fetch one row data in the database based on
the parameter value I entered. After I created the store procedure,
the store procedure code looks like this:
ALTER proc getProductCommS cale @product As varchar(30), @TISCommRate As
Decimal(5,2) OUTPUT,
@BrokerCommRate As Decimal(5,2) OUTPUT, @Fee As Decimal(5,2) OUTPUT
As
if RTRIM(@product) ='Imed'
Select @TISCommRate=TI SComm, @BrokerCommRate =BrokerComm, @Fee=Fee
from tis_productComm Scale where ProductName='Im ed'
select @TISCommRate , @BrokerCommRate , @Fee
Return
an dthen I tested in the database with the following code:
Declare @TISCommRate As Decimal(5,2)
Declare @BrokerCommRate As Decimal(5,2)
Declare @Fee As Decimal(5,2)
exec getProductCommS cale 'Vusa',@TISComm Rate, @BrokerCommRate , @Fee
Then I got the following data:
.35 .20 5.00

But it seems not working in asp.net(1.1), here is part of my .net coding:
Dim sqlConnection As SqlConnection = New
SqlConnection(C onfigurationSet tings.AppSettin gs(Global.CfgKe yConnString))
Dim myCommand As SqlCommand = New
SqlCommand("Get ProductCommScal e", sqlConnection)

myCommand.Comma ndType = CommandType.Sto redProcedure
Dim pProduct As SqlParameter = New SqlParameter("@ Product",
SqlDbType.VarCh ar, 30)
pProduct.Value = product
myCommand.Param eters.Add(pProd uct)

Dim pTisCommRate As SqlParameter = New
SqlParameter("@ TISCommRate", SqlDbType.Decim al)
pTisCommRate.Pr ecision = 5
pTisCommRate.Sc ale = 2
pTisCommRate.Di rection = ParameterDirect ion.Output
myCommand.Param eters.Add(pTisC ommRate)

Dim pBrokerCommRate As SqlParameter = New
SqlParameter("@ BrokerCommRate" , SqlDbType.Decim al)
pBrokerCommRate .Precision = 5
pBrokerCommRate .Scale = 2
pBrokerCommRate .Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pBrok erCommRate)

Dim pFee As SqlParameter = New SqlParameter("@ Fee",
SqlDbType.Decim al)
pFee.Precision = 5
pFee.Scale = 2
pFee.Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pFee)

sqlConnection.O pen()
Dim reader As SqlDataReader = myCommand.Execu teReader()

Dim TisCommRate As Decimal = Convert.ToDecim al(pTisCommRate .Value)

But somehow I always get nothing from pTisCommRate.Va lue, same to the other
parameters. What's going on? I am just learning to get data from output
parameters, did I miss anything?

--
Betty
Aug 29 '06 #2
Hi everyone,
I got it. It is because I added one more line code in the Store Procedure
which is

select ,@TISCommRate, @BrokerCommRate , @Fee
It is used for displaying data after the execution of the store procedure.
After I removed the line of code, the data in the my asp.net fine now.
Can you tell me why?

--
Betty
"c676228" wrote:
Sorry, I use the wrong one: exec getProductCommS cale 'Vusa',@TISComm Rate,
@BrokerCommRate , @Fee
Acutally I mean exec getProductCommS cale 'Imed,@TISCommR ate,
@BrokerCommRate , @Fee

--
Betty
"c676228" wrote:
Hi everyone,
I wrote a store procedure that fetch one row data in the database based on
the parameter value I entered. After I created the store procedure,
the store procedure code looks like this:
ALTER proc getProductCommS cale @product As varchar(30), @TISCommRate As
Decimal(5,2) OUTPUT,
@BrokerCommRate As Decimal(5,2) OUTPUT, @Fee As Decimal(5,2) OUTPUT
As
if RTRIM(@product) ='Imed'
Select @TISCommRate=TI SComm, @BrokerCommRate =BrokerComm, @Fee=Fee
from tis_productComm Scale where ProductName='Im ed'
select @TISCommRate , @BrokerCommRate , @Fee
Return
an dthen I tested in the database with the following code:
Declare @TISCommRate As Decimal(5,2)
Declare @BrokerCommRate As Decimal(5,2)
Declare @Fee As Decimal(5,2)
exec getProductCommS cale 'Vusa',@TISComm Rate, @BrokerCommRate , @Fee
Then I got the following data:
.35 .20 5.00

But it seems not working in asp.net(1.1), here is part of my .net coding:
Dim sqlConnection As SqlConnection = New
SqlConnection(C onfigurationSet tings.AppSettin gs(Global.CfgKe yConnString))
Dim myCommand As SqlCommand = New
SqlCommand("Get ProductCommScal e", sqlConnection)

myCommand.Comma ndType = CommandType.Sto redProcedure
Dim pProduct As SqlParameter = New SqlParameter("@ Product",
SqlDbType.VarCh ar, 30)
pProduct.Value = product
myCommand.Param eters.Add(pProd uct)

Dim pTisCommRate As SqlParameter = New
SqlParameter("@ TISCommRate", SqlDbType.Decim al)
pTisCommRate.Pr ecision = 5
pTisCommRate.Sc ale = 2
pTisCommRate.Di rection = ParameterDirect ion.Output
myCommand.Param eters.Add(pTisC ommRate)

Dim pBrokerCommRate As SqlParameter = New
SqlParameter("@ BrokerCommRate" , SqlDbType.Decim al)
pBrokerCommRate .Precision = 5
pBrokerCommRate .Scale = 2
pBrokerCommRate .Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pBrok erCommRate)

Dim pFee As SqlParameter = New SqlParameter("@ Fee",
SqlDbType.Decim al)
pFee.Precision = 5
pFee.Scale = 2
pFee.Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pFee)

sqlConnection.O pen()
Dim reader As SqlDataReader = myCommand.Execu teReader()

Dim TisCommRate As Decimal = Convert.ToDecim al(pTisCommRate .Value)

But somehow I always get nothing from pTisCommRate.Va lue, same to the other
parameters. What's going on? I am just learning to get data from output
parameters, did I miss anything?

--
Betty
Aug 29 '06 #3
I got it, it is because of the extra line of code in the store procedure
select @TISCommRate, @BrokerCommRate , @Fee
for displaying execution result from the store procedure. After I removed
this line of code, it is fine in asp.net.
Can you tell me why?
--
Betty
"c676228" wrote:
Sorry, I use the wrong one: exec getProductCommS cale 'Vusa',@TISComm Rate,
@BrokerCommRate , @Fee
Acutally I mean exec getProductCommS cale 'Imed,@TISCommR ate,
@BrokerCommRate , @Fee

--
Betty
"c676228" wrote:
Hi everyone,
I wrote a store procedure that fetch one row data in the database based on
the parameter value I entered. After I created the store procedure,
the store procedure code looks like this:
ALTER proc getProductCommS cale @product As varchar(30), @TISCommRate As
Decimal(5,2) OUTPUT,
@BrokerCommRate As Decimal(5,2) OUTPUT, @Fee As Decimal(5,2) OUTPUT
As
if RTRIM(@product) ='Imed'
Select @TISCommRate=TI SComm, @BrokerCommRate =BrokerComm, @Fee=Fee
from tis_productComm Scale where ProductName='Im ed'
select @TISCommRate , @BrokerCommRate , @Fee
Return
an dthen I tested in the database with the following code:
Declare @TISCommRate As Decimal(5,2)
Declare @BrokerCommRate As Decimal(5,2)
Declare @Fee As Decimal(5,2)
exec getProductCommS cale 'Vusa',@TISComm Rate, @BrokerCommRate , @Fee
Then I got the following data:
.35 .20 5.00

But it seems not working in asp.net(1.1), here is part of my .net coding:
Dim sqlConnection As SqlConnection = New
SqlConnection(C onfigurationSet tings.AppSettin gs(Global.CfgKe yConnString))
Dim myCommand As SqlCommand = New
SqlCommand("Get ProductCommScal e", sqlConnection)

myCommand.Comma ndType = CommandType.Sto redProcedure
Dim pProduct As SqlParameter = New SqlParameter("@ Product",
SqlDbType.VarCh ar, 30)
pProduct.Value = product
myCommand.Param eters.Add(pProd uct)

Dim pTisCommRate As SqlParameter = New
SqlParameter("@ TISCommRate", SqlDbType.Decim al)
pTisCommRate.Pr ecision = 5
pTisCommRate.Sc ale = 2
pTisCommRate.Di rection = ParameterDirect ion.Output
myCommand.Param eters.Add(pTisC ommRate)

Dim pBrokerCommRate As SqlParameter = New
SqlParameter("@ BrokerCommRate" , SqlDbType.Decim al)
pBrokerCommRate .Precision = 5
pBrokerCommRate .Scale = 2
pBrokerCommRate .Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pBrok erCommRate)

Dim pFee As SqlParameter = New SqlParameter("@ Fee",
SqlDbType.Decim al)
pFee.Precision = 5
pFee.Scale = 2
pFee.Direction = ParameterDirect ion.Output
myCommand.Param eters.Add(pFee)

sqlConnection.O pen()
Dim reader As SqlDataReader = myCommand.Execu teReader()

Dim TisCommRate As Decimal = Convert.ToDecim al(pTisCommRate .Value)

But somehow I always get nothing from pTisCommRate.Va lue, same to the other
parameters. What's going on? I am just learning to get data from output
parameters, did I miss anything?

--
Betty
Aug 29 '06 #4
Hi Betty,

As for the store procedure output parameter behavior you encountered, it is
due to the following reason:

When you add the addition statement below in your SP:

select ,@TISCommRate, @BrokerCommRate , @Fee

after you executed the stored precedure, it will return three results:

1. three columes resulted by the above statement, you can change the
statement to

"select ,@TISCommRate as AA , @BrokerCommRate as BB , @Fee as CC" to
distinct with your output paramters

2. the output parameters defined in your SP( @TISCommRate,
@BrokerCommRate , @Fee)

3. the return value of your store procedure.

You can verify this by executing the SP in SQL Server management studio or
query analyzer.

When you execute the SP through .NET SqlCommand object, the returned
DataReader will also contains the three results, and the #1 one is in ahead
of the output parameters, therefore, you need to use the
DataReader.Next Result to go through the previous result and query the
parameters. e.g:

=============== ====
............... .

Dim reader As SqlDataReader
reader = comm.ExecuteRea der()

'get the first result

reader.NextResu lt()

For Each pm As SqlParameter In comm.Parameters

If pm.Direction = ParameterDirect ion.Output Then
Response.Write( "<br/>" & pm.ParameterNam e & ": " & pm.Value)
End If
Next

reader.Close()
conn.Close()
=============== =============== ===

another means to get the output parameter is access the Parameters
collection after you have closed the datareader, at that time, those output
parameter has been filled with the proper return values. e.g.

=============== ====
............... .

Dim reader As SqlDataReader
reader = comm.ExecuteRea der()

...........

reader.Close()

' access the output parameters here

=============== =============== ===

Hope this helps clarify it. If you have anything unclear, please feel free
to let me know.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead

=============== =============== =============== =====

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.

=============== =============== =============== =====

This posting is provided "AS IS" with no warranties, and confers no rights.

Aug 30 '06 #5
Steve,
thank you for the very clear clarification.
Nice to meet you here again.
--
Betty
"Steven Cheng[MSFT]" wrote:
Hi Betty,

As for the store procedure output parameter behavior you encountered, it is
due to the following reason:

When you add the addition statement below in your SP:

select ,@TISCommRate, @BrokerCommRate , @Fee

after you executed the stored precedure, it will return three results:

1. three columes resulted by the above statement, you can change the
statement to

"select ,@TISCommRate as AA , @BrokerCommRate as BB , @Fee as CC" to
distinct with your output paramters

2. the output parameters defined in your SP( @TISCommRate,
@BrokerCommRate , @Fee)

3. the return value of your store procedure.

You can verify this by executing the SP in SQL Server management studio or
query analyzer.

When you execute the SP through .NET SqlCommand object, the returned
DataReader will also contains the three results, and the #1 one is in ahead
of the output parameters, therefore, you need to use the
DataReader.Next Result to go through the previous result and query the
parameters. e.g:

=============== ====
............... .

Dim reader As SqlDataReader
reader = comm.ExecuteRea der()

'get the first result

reader.NextResu lt()

For Each pm As SqlParameter In comm.Parameters

If pm.Direction = ParameterDirect ion.Output Then
Response.Write( "<br/>" & pm.ParameterNam e & ": " & pm.Value)
End If
Next

reader.Close()
conn.Close()
=============== =============== ===

another means to get the output parameter is access the Parameters
collection after you have closed the datareader, at that time, those output
parameter has been filled with the proper return values. e.g.

=============== ====
............... .

Dim reader As SqlDataReader
reader = comm.ExecuteRea der()

...........

reader.Close()

' access the output parameters here

=============== =============== ===

Hope this helps clarify it. If you have anything unclear, please feel free
to let me know.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead

=============== =============== =============== =====

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.

=============== =============== =============== =====

This posting is provided "AS IS" with no warranties, and confers no rights.

Aug 30 '06 #6
Me too :-)

Have a nice day!

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead
This posting is provided "AS IS" with no warranties, and confers no rights.

Aug 31 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

15
6023
by: Jarrod Morrison | last post by:
Hi All Im generally a vb programmer and am used to referencing multiple records returned from a query performed on an sql database and im trying to move some functions of my software into sql stored procedures. So far ive been able to move the functions relatively easily but im unsure about how to output multiple values from an sql stored procedure. By this i mean for example one of the stored procedures may take your username and return...
0
5416
by: sedefo | last post by:
I ran into this Microsoft Patterns & Practices Enterprise Library while i was researching how i can write a database independent data access layer. In my company we already use Data Access Application Block (DAAB) in our .Net projects. We use SqlHelper in SQL based projects, and OracleHelper in Oracle based ones. OracleHelper was not published officially by Microsoft as part of the DAAB but it was given as a helper code in a sample .Net...
2
4269
by: serge | last post by:
My project is to automate testing of Stored Procedures of type SELECT (at least for now). I want to create a table where each stored procedure's input parameter values are entered and in another table the expected result value(s) are entered when executed against a sample database containing manually entered and verified data. My current problem is that the stored procedures' input
6
2716
by: Rod Snyder | last post by:
I'm trying to set up an asp.net (vb.net) that will allow a user to insert/update a bio/profile. I wanted to create a SQL Server 2000 table that includes their contact info and bio info. However, I'm not getting SQL Server to accept more than about two paragraphs of info. I've tried the datatypes of ntext and nvar char to no success. I'm presuming most people will be cutting and pasting from a Word document also. Does anyone have any...
1
1381
by: Agnes | last post by:
I try to set an output parameter to get the result from store procedure, However,Do I still need to loop the reader to get result ?? Thanks a lot cmdKey.Parameters("@result").Direction = ParameterDirection.Output Dim drCntrId As SqlDataReader = cmdKey.ExecuteReader(CommandBehavior.SingleRow) While drCntrId.Read strKey = drCntrId.Item("result") End While
4
50420
by: Mr Not So Know It All | last post by:
im new to SQL Server and ASP.Net. Here's my problem. I have this SQL Server stored procedure with an input parameter and output parameter CREATE PROCEDURE . @in_rc varchar(8) @out_eList varchar(7) output AS select @out_eList = ecuid from _organization where rccode = @in_rc GO
11
4383
by: c676228 | last post by:
Hi everyone, I am just wodering in asp program, if there is anybody writing store procedure for inserting data into database since there are so many parameters need to be passed into store procedure(assume there are many columns in the table). I need to insert data into two separate tables, the relation between these two tables is 1 row of data in table1 could have multiple rows in table2 related to table1, but if the data insertion into...
1
6137
by: sheenaa | last post by:
Hello Members, I m creating my application forms in ASP.Net 2005 C# using the backend SQL Server 2005. What i have used on forms :: ? On my first form i have used some label,textboxs,dropdownlists,radiobutton and checkbox asp standard controls. On the click event of the command button the data gets stored into the database. I have created the stored procedures for the insert,update,delete. I have...
4
9963
amitpatel66
by: amitpatel66 | last post by:
In real time applications, there is always a requirement to generate the data selected from database in XML format. using Oracle, generating XML Structured data becomes easier using the inbuilt package DBMS_XMLGEN. This package can be used to convert the OUTPUT of the SELECT Query in to XML Format. The below code can be used to generate the SELECT Query OUTPUT in XML Format: DECLARE my_context NUMBER := 0;
0
9677
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10560
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10607
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9389
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7798
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6986
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5662
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
4033
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3119
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.