Solved

Problem calling stored procedure with numeric/decimal data type

Posted on 2003-11-14
4
554 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
ID: 9749833
what's the error?
0
 
LVL 19

Expert Comment

by:Dexstar
ID: 9749854
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
ID: 9749888
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
ID: 9749961
Thanks that was the trick!
0

Featured Post

Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I recently decide that I needed a way to make my pages scream on the net.   While searching around how I can accomplish this I stumbled across a great article that stated "minimize the server requests." I got to thinking, hey, I use more than one…
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/…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

809 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