Avatar of juliandormon
juliandormon
 asked on

TSQL decimal input parameter when doing a select statement problem

I'm trying to create a recordset from within an ASP page which should return some value when I pass in a decimal. I am getting some bizarre error when doing so. I imagine this may have to do with setting the parameter correctly. The parameter is TotalPrice below.

Can you please advise:

set sp_select_product_bundle = Server.CreateObject("ADODB.Command")
      sp_select_product_bundle.ActiveConnection = MY_SQL_STRING
      sp_select_product_bundle.CommandText = "SQL123.sp_bbb_select_product_bundle"
      sp_select_product_bundle.CommandType = 4
      sp_select_product_bundle.CommandTimeout = 0
      sp_select_product_bundle.Prepared = true
      sp_select_product_bundle.Parameters.Append sp_select_product_bundle.CreateParameter("@RETURN_VALUE", 3, 4)
      sp_select_product_bundle.Parameters.Append sp_select_product_bundle.CreateParameter("@TotalPrice", 14, 1,2,sp_select_product_bundle__TotalPrice)
      sp_select_product_bundle.Parameters.Append sp_select_product_bundle.CreateParameter("@DomainPurchased", 11, 1,1,sp_select_product_bundle__DomainPurchased)
      set RS_ProductBundle = sp_select_product_bundle.Execute
Microsoft SQL Server

Avatar of undefined
Last Comment
ModCorlEEone

8/22/2022 - Mon
sammySeltzer

what error are you getting?

I bet you are using dreamweaver!
cyberkiwi

     sp_select_product_bundle.Parameters.Append sp_select_product_bundle.CreateParameter("@TotalPrice", 14, 1,2,sp_select_product_bundle__TotalPrice)

Wouldn't 2 be too small a size for something like "total" price?
cyberkiwi

http://www.w3schools.com/ado/ado_ref_parameter.asp

Size: Sets or returns the maximum size in bytes or characters of a value in a Parameter object

You have allowed a sum total of 2 bytes...
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
juliandormon

ASKER
Sorry that was actually set to 8 - but same error
juliandormon

ASKER
Set it back to 8 and still get the following error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
cyberkiwi

If you want a recordset, you need to use Open, not Execute

      set RS_ProductBundle = sp_select_product_bundle.Open
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
juliandormon

ASKER
Is this relating to decimal? I've got over 100 stored procedures which return recordsets and they all use Execute without a problem.
cyberkiwi

Next, verify that the SP runs correctly in SSMS

exec SQL123.sp_bbb_select_product_bundle 123.45, 1

(fake values for total and purchased)

If that also works, then try changing this to smallint.  I have trouble sometimes with bit/boolean fields.

Dim purchased
If sp_select_product_bundle__DomainPurchased then purchased = 1 else purchased = 0
      sp_select_product_bundle.Parameters.Append sp_select_product_bundle.CreateParameter("@DomainPurchased", 2, 1,1, purchased)
cyberkiwi

When running this

exec SQL123.sp_bbb_select_product_bundle 123.45, 1

Check how many resultsets are generated by the SP, including informational messages like
(3) rows affected.  If it generates multiple of these, you need to add SET NOCOUNT ON in the SP.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
juliandormon

ASKER
It runs fun from within SSMS.
Do i have to set precision and scale for a select?
ASKER CERTIFIED SOLUTION
juliandormon

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Anthony Perkins

>>Do i have to set precision and scale for a select?<<
Whenever you use decimal data type you must set precision and scale.
juliandormon

ASKER
n
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
ModCorlEEone

juliandormon,
 
I am starting the self-close process on this question because it appears to me that you have answered your own question.
 
ModCorlEEone
Community Support Moderator