将int转换为数字的算术溢出错误 [英] Arithmetic overflow error converting int to numeric

查看:144
本文介绍了将int转换为数字的算术溢出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在存储过程中将int转换为Numeric的算术溢出错误







Arithmetic overflow error converting int to Numeric in stored procedure



string str;
                      str = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
                      SqlConnection sqlCon = new SqlConnection(str);

                        sqlCon.Open();
                        SqlCommand SqlCmd = new SqlCommand("sp_genSimpleConvent", sqlCon);
                        SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;

                        //Create and supply the output parameters

                        SqlCmd.Parameters.AddWithValue("@PRINCIPAL", SqlDbType.Decimal).Value = txt_Principal.Text;
                        SqlCmd.Parameters.AddWithValue("@INTEREST", SqlDbType.Decimal).Value = txt_Interest.Text;
                        SqlCmd.Parameters.AddWithValue("@TERM_MONTH", SqlDbType.Int).Value = txt_Term_Month.Text;
                        SqlCmd.Parameters.AddWithValue("@TERM_YEAR", SqlDbType.Int).Value = txt_Term_Year.Text;
                        SqlCmd.Parameters.AddWithValue("@DEDMONTH", SqlDbType.Decimal).Value = txt_Monthly.Text;
                        SqlCmd.Parameters.AddWithValue("@PARAMETERTYPE", SqlDbType.VarChar).Value = ddl_Payment_Type.SelectedValue;


                        int CMTH = DateTime.Now.Month;
                        int CYR  = DateTime.Now.Year;

                        int MMTH = 12 * CYR + CMTH;

                        SqlCmd.Parameters.AddWithValue("@CMTH", SqlDbType.Int).Value = CMTH;
                        SqlCmd.Parameters.AddWithValue("@CYR", SqlDbType.Int).Value  = CYR;
                        SqlCmd.Parameters.AddWithValue("@CMMTH", SqlDbType.Int).Value= MMTH;











我做错了什么?





ALTER PROCEDURE [dbo]。[sp_genSimpleConvent]



@PRINCIPAL钱,

@INTEREST钱,

@TERM_MONTH Int,

@TERM_YEAR Int,

@DEDMONTH钱,

@PARAMETERTYPE VarChar(30),

@CMTH Int,

@CYR Int,

@CMMTH Int,

@Return varchar(200)输出



AS

从日程表中删除







设置@Return = @ CMMTH



BEGIN





IF @ PARAMETERTYPE ='简单利益'





BEGIN

DECLARE @MCCNT INT,

@MCOMPCNT INT,

@ MDEDUCT MONEY,

@MAM TP MONEY,

@MPRINC钱,

@MINTR钱,

@MOUT MONEY,

@MOUTSTAND MONEY ,

@RROUT MONEY,

@OPENING MONEY,

@MOND MONEY,

@CCMTH INT,

@CCYR INT< / pre>






What am I doing wrong?


ALTER PROCEDURE [dbo].[sp_genSimpleConvent]
(
@PRINCIPAL money,
@INTEREST money,
@TERM_MONTH Int,
@TERM_YEAR Int,
@DEDMONTH money,
@PARAMETERTYPE VarChar(30),
@CMTH Int,
@CYR Int,
@CMMTH Int,
@Return varchar(200) Output
)
AS
DELETE FROM SCHEDULE



Set @Return =@CMMTH

BEGIN


IF @PARAMETERTYPE='SIMPLE INTEREST'


BEGIN
DECLARE @MCCNT INT,
@MCOMPCNT INT,
@MDEDUCT MONEY,
@MAMTP MONEY,
@MPRINC MONEY,
@MINTR MONEY,
@MOUT MONEY,
@MOUTSTAND MONEY,
@RROUT MONEY,
@OPENING MONEY,
@MOND MONEY,
@CCMTH INT ,
@CCYR INT </pre>

推荐答案

您正在错误地使用AddWithValue()。



You're using AddWithValue() incorrectly.

SqlCmd.Parameters.AddWithValue("@PRINCIPAL",Single.Parse(txt_Principal.Text,CultureInfo.InvariantCulture.NumberFormat));



< br $>






or

SqlCmd.Parameters.Add("@PRINCIPAL", SqlDbType.Decimal);
SqlCmd.Parameters["@PRINCIPAL"].Value = Single.Parse(txt_Principal.Text, CultureInfo.InvariantCulture.NumberFormat);


这篇关于将int转换为数字的算术溢出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆