Solved

Problem calling stored procedure with numeric/decimal data type

Posted on 2003-11-14
4
550 Views
Last Modified: 2012-08-13
  Ok, from chopping functionality out of my stored procedure, I've found where my ASP call to my stored procedure is messing up.  As it stands here is my stored procedure:

CREATE PROCEDURE sp_uscholar_studentinsert
@pid char(9),
@fname varchar(50),
@lname varchar(50),
@haddr varchar(100),
@hcity varchar(100),
@hstate char(2),
@hzip char(5),
@laddr varchar(100),
@lcity varchar(100),
@lstate char(2),
@lzip char(5),
@hscounty tinyint,
@hsstate char(2),
@hsname varchar(100),
@email varchar(100),
@semcredits smallint,
@totalcredits smallint,
@standing varchar(10),
@gpa numeric(3,2)
AS

if exists(Select * from uscholar_student where pid = @pid)
begin
update uscholar_student set
fname = @fname,
lname = @lname,
haddr = @haddr,
hcity = @hcity,
hstate = @hstate,
hzip = @hzip,
laddr = @laddr,
lcity = @lcity,
lstate = @lstate,
lzip = @lzip,
hscounty = @hscounty,
hsstate = @hsstate,
hsname = @hsname,
email = @email,
semcredits = @semcredits,
totalcredits = @totalcredits,
standing = @standing,
gpa = @gpa
where pid = @pid
end

else
return(1)

Go




The following is the relevant info from my ASP code (the second to last line is the one that doesn't work.  I know this because if I remove the gpa parameter and the gpa portion of the update statement, it works):

.
.
.
gpa = Request.Form("GPA")
.
.
.
set objCmd = Server.CreateObject("ADODB.Command")


objCmd.CommandText = "sp_uscholar_studentinsert"
set objCmd.ActiveConnection = Data3
objCmd.CommandType = adCmdStoredProc

objCmd.Parameters.Append objCmd.CreateParameter("@pid", adChar, adParamInput, 9, Session("pid"))
objCmd.Parameters.Append objCmd.CreateParameter("@fname", adVarChar, adParamInput, 50, fname)
objCmd.Parameters.Append objCmd.CreateParameter("@lname", adVarChar, adParamInput, 50, lname)
objCmd.Parameters.Append objCmd.CreateParameter("@haddr", adVarChar, adParamInput, 100, haddr)
objCmd.Parameters.Append objCmd.CreateParameter("@hcity", adVarChar, adParamInput, 100, hcity)
objCmd.Parameters.Append objCmd.CreateParameter("@hstate", adChar, adParamInput, 2, hstate)
objCmd.Parameters.Append objCmd.CreateParameter("@hzip", adChar, adParamInput, 5, hzip)
objCmd.Parameters.Append objCmd.CreateParameter("@laddr", adVarChar, adParamInput, 100, laddr)
objCmd.Parameters.Append objCmd.CreateParameter("@lcity", adVarChar, adParamInput, 100, lcity)
objCmd.Parameters.Append objCmd.CreateParameter("@lstate", adChar, adParamInput, 2, lstate)
objCmd.Parameters.Append objCmd.CreateParameter("@lzip", adChar, adParamInput, 5, lzip)
objCmd.Parameters.Append objCmd.CreateParameter("@hscounty", adTinyInt, adParamInput, , hscounty)
objCmd.Parameters.Append objCmd.CreateParameter("@hsstate", adChar, adParamInput, 2, hsstate)
objCmd.Parameters.Append objCmd.CreateParameter("@hsname", adVarChar, adParamInput, 100, hsname)
objCmd.Parameters.Append objCmd.CreateParameter("@email", adVarChar, adParamInput, 100, email)
objCmd.Parameters.Append objCmd.CreateParameter("@semcredits", adSmallInt, adParamInput, , semcredits)
objCmd.Parameters.Append objCmd.CreateParameter("@totalcredits", adSmallInt, adParamInput, , totalcredits)
objCmd.Parameters.Append objCmd.CreateParameter("@standing", adVarChar, adParamInput, 10 , standing)
objCmd.Parameters.Append objCmd.CreateParameter("@gpa", adNumeric, adParamInput, , gpa)


objCmd.Execute
0
Comment
Question by:mears11
  • 2
4 Comments
 
LVL 4

Expert Comment

by:af500
Comment Utility
what's the error?
0
 
LVL 19

Expert Comment

by:Dexstar
Comment Utility
mears11:

> The following is the relevant info from my ASP code (the second to last line
> is the one that doesn't work.  I know this because if I remove the gpa parameter
> and the gpa portion of the update statement, it works):

If you specify adDecimal or adNumeric data type, you must also set the NumericScale and the Precision properties of the Parameter object.

Hope That Helps,
Dex*
0
 
LVL 19

Accepted Solution

by:
Dexstar earned 250 total points
Comment Utility
mears11:

> objCmd.Parameters.Append objCmd.CreateParameter("@gpa", adNumeric, adParamInput, , gpa)

Change that to this:
     Dim objParam
     Set objParam = objCmd.CreateParameter("@gpa", adNumeric, adParamInput, , gpa)
     objParam.Precision = 3
     objParam.NumericScale = 2
     objCmd.Parameters.Append objParam


Dex*
0
 

Author Comment

by:mears11
Comment Utility
Thanks that was the trick!
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

I would like to start this tip/trick by saying Thank You, to all who said that this could not be done, as it forced me to make sure that it could be accomplished. :) To start, I want to make sure everyone understands the importance of utilizing p…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now