带输入输出参数的存储过程CREATE proc proc_InAndOut ( @outParam int output, @inParam nvarchar(50) ) as if exists(select * from Student where StudentName=@inParam) begin set @outParam=1; end else begin set @outParam=0; end GO 带输入参数,返回数据表的存储过程CREATE proc proc_getDataReader ( @StudentName nvarchar(50), @inParam nvarchar(50) ) as if exists(select * from Student where StudentName=@inParam) begin select * from Student end else begin select StudentName from Student end GO 在查询分析器中执行带输出参数的存储过程--declare @inParam nvarchar(50)--输入参数无需定义 declare @outParam int--输出参数必须定义 --这里的参数次序与存储过程的参数次序要一致. exec proc_InAndOut @outParam output,@inParam='tree' select @outParam 在查询分析器中执行带输入参数,返回数据行的存储过程exec proc_getDataReader @StudentName='tree',@inParam='tree' C#执行存储过程,参照SQLHelper(for winForm)博文using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Collections; using HelloWinForm.DBUtility; using System.Windows.Forms; namespace HelloWinForm.DAL { class Student { SQLHelper sqlHelper = new SQLHelper();//非静态方法,需要实例化类 /// <summary> /// 执行带输入输出参数的存储过程 /// </summary> /// <returns></returns> public int procInAndOut() { SqlParameter[] paramsArr = { sqlHelper.MakeOutParam("@outParam" , SqlDbType.Int , 4), sqlHelper.MakeInParam("@inParam" , SqlDbType.NVarChar , 50 ,"tree") }; paramsArr[0].Direction = ParameterDirection.Output; int lines = sqlHelper.RunProc("proc_InAndOut", paramsArr); //return (int)cmd.Parameters[0].Value; return lines; } /// <summary> /// 执行带输入参数的存储过程,返回DataReader,不用此法,不方法,需要再次关闭数据连接 /// </summary> /// <returns></returns> public SqlDataReader getDataReader() { SqlDataReader reader; SqlParameter[] paramsArr = { sqlHelper.MakeInParam("@StudentName" , SqlDbType.NVarChar , 50 ,"tree"), sqlHelper.MakeInParam("@inParam" , SqlDbType.NVarChar , 50 ,"tree") }; sqlHelper.RunProc("proc_getDataReader", paramsArr, out reader); //sqlHelper.Close();//不能在此关闭 return reader; } /// <summary> /// 如果使用DataReader应该在这里执行打开和关闭. /// </summary> /// <returns></returns> public string getDataFromReader() { string returnStr = ""; SqlDataReader reader; SqlParameter[] paramsArr = { sqlHelper.MakeInParam("@StudentName" , SqlDbType.NVarChar , 50 ,"tree"), sqlHelper.MakeInParam("@inParam" , SqlDbType.NVarChar , 50 ,"tree") }; sqlHelper.RunProc("proc_getDataReader", paramsArr, out reader); try { while (reader.Read()) { returnStr += reader.GetInt32(0); returnStr += reader.GetString(1); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { sqlHelper.Close(); } return returnStr; } public string test() { string str = ""; SqlDataReader dr = SQLHelper.ExecuteReader("select * from Student"); while (dr.Read()) { str += dr["StudentNO"].ToString(); } dr.Close(); return str; } public int proc() { return sqlHelper.RunProc("proc_Test"); } } }