要实现功能很简单,就是根据编号从名单表中查出姓名:
CREATE PROCEDURE dbo.getName
(
@bianhao  varchar(10),
@name  varchar(10)  output
)
AS
SELECT  姓名
FROM 名单表
where 编号 =@bianhao
RETURN
GO用查询分析器执行正常:
declare @bh varchar(10)
declare @name varchar(10) 
set @bh='101006'
exec getname @bh,@name output但用下面的语加调用时出错(用MessageBox显示是空的,但表中确实存在这个编号和姓名):未处理 System.InvalidCastException
  Message="无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。"
当从一个数字执行强制转换时,值必须是一个小于无限大的数字。            SqlCommand myComm1 = new SqlCommand("getName", myConn);
            myComm1.CommandType = CommandType.StoredProcedure;
            myComm1.Parameters.AddWithValue("@bianhao",bianhao);
            SqlParameter name= new SqlParameter("@name", SqlDbType.VarChar, 10);
            name.Direction = ParameterDirection.Output;
            myComm1.Parameters.Add(name);
            myComm1.ExecuteNonQuery();
            MessageBox.Show(name.Value.ToString());
            return (string)name.Value;