C#调用存储过程问题,求助~!
代码哥 2012-10-05 10:58:23 我是C#winform初学者,以下问题向各位大虾求助!
C#winform 中调用预存程序:
SqlCommand cmd = new SqlCommand("HXZTJY", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@years", SqlDbType.NVarChar ).Value = txtDate.ToString().Trim();
cmd.Parameters.Add("@departno", SqlDbType.NVarChar).Value = txtDep.Text.ToString().Trim();
cmd.Parameters.Add("@staffno", SqlDbType.NVarChar).Value = txtNam.Text.ToString().Trim();
int i = cmd.ExecuteNonQuery();
conn.Dispose();
conn.Dispose();
conn.Close();
MessageBox.Show("计算完成!", "系统提示");
原本的预存程序 HXZTJY 是一段薪资计算的代码,我简化了内容 如下:
CREATE PROCEDURE [dbo].[HXZTJY]
@years varchar(6),
@departno nvarchar(6),
@staffno nvarchar(6)
AS
declare @begin_date datetime
declare @end_date datetime
declare @day float(8),
@Y1 float(8), --基本底薪
@Y2 float(8), --每月標准天數
@Y3 float(8), --標准工作時間
@Y4 float(8) --應出勤天數
set @begin_date=convert(datetime,@years+'01')
set @end_date=dateadd(dd,-1,dateadd(mm,1,@begin_date))
set @Y2=21.75
set @Y3=8
set @day=day(@end_date)
GO
以上的预存程序我在 SQLSERVER的查询分析器中执行是没问题 ,如:exec HXZTJY'201209','Y01007','%'
加上: print @begin_date ,print @end_date 也是能打印出时间变量的值,但用在C# winform程序中就会报错:
"从字符串转换为 datetime 时发生语法错误。"