SqlCommand cmd = new SqlCommand("s_AddSelectResult", con.conn);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add("@YearTermID", SqlDbType.Char,5).Value = yearterm;
                        cmd.Parameters.Add("@StudID", SqlDbType.Char,11).Value = studid;
                        cmd.Parameters.Add("@CourID", SqlDbType.Char,6).Value = this.dataGridView1.Rows[i].Cells[2].Value.ToString();
                        cmd.Parameters.Add("@CourOrder", SqlDbType.SmallInt,4).Value = this.dataGridView1.Rows[i].Cells[4].Value.ToString();
                        cmd.Parameters.Add("@Reupflag", SqlDbType.SmallInt,4).Value = this.dataGridView1.Rows[i].Cells[5].Value.ToString();
                        
                        SqlParameter str = new SqlParameter("@rst",SqlDbType.NVarChar);
                        str.Direction = ParameterDirection.Output;
                        cmd.Parameters.Add(str);
                                                con.conn.Open();
                        cmd.ExecuteNonQuery();
                        con.conn.Close();CREATE PROCEDURE s_AddSelectResult --增加选课纪录
(
@YearTermID char(5), --学年学期
@CourID char(6),     --课程号
@StudID char(11),    --学号
@CourOrder smallint, --课序号
@Reupflag smallint,  --重修标志
@rst nvarchar(30) out --返回结果
)AS
DECLARE
@row char(4)--首先判断是否存在相同的纪录
IF (not exists (select * from s_selectresult where yeartermid = @YearTermID and courid = @CourID and studid = @StudID and CourOrder = @CourOrder))
BEGIN
--插入纪录
Insert into s_SelectResult(YearTermID, CourID, StudID, CourOrder, ReupFlag, BeSelected, CancelFlag, 
       SelectFlag, MateFlag, LastDate, Operator)
     values(@YearTermID,@CourID,@StudID,@CourOrder,@ReupFlag,1,0,0,0,getdate(),'yixian') --判断是否插入成功
IF ( @@rowcount = 1)
BEGIN
SET @rst = '增加成功'
END
END
ELSE
BEGIN
SET @rst = '失败,该生已选过该课程'
END
其中winform中的这几句.
                        SqlParameter str = new SqlParameter("@rst",SqlDbType.NVarChar);
                        str.Direction = ParameterDirection.Output;
                        cmd.Parameters.Add(str);
错误是没有传递参数......
可是我明明是定义的是返回值的.
                        @rst nvarchar(30) out --返回结果事实上,如果我这样写就是对的.
                       str.value = "";
可我的返回值不对.在网上查了下,好像返回值有两种,谁能给俺讲讲是哪里的问题?

解决方案 »

  1.   

    SqlParameter str = new SqlParameter("@rst",SqlDbType.NVarChar); 
                            str.Direction = ParameterDirection.Output; 
                            cmd.Parameters.Add(str); 
    这里参数没有赋值。
    str.value = ""; //这样才赋值了。
    之于执行结果不对,你可以把现在有的参数放到SQL里去调试储存过程,试下
    exec s_AddSelectResult 参数列表
    查看返回结果
      

  2.   

    在执行了cmd.ExecuteNonQuery();这句后才取值:string s = cmd.Parameters["@rst"].Value.ToString();