将int转换为数字的算术溢出错误 [英] Arithmetic overflow error converting int to numeric
问题描述
在存储过程中将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屋!