我想返回数据集 又想得到存储过程output中的参数,同事存储过程中还有需要传进去的参数,而只有一个output,要详细的,100分全给一人~~
解决方案 »
- 运算符“|” 在这里是什么意思?
- 关于小票打印机的问题
- FCKeditor2.6.4的使用..
- 关于Random().NextBytes()在内存的编码(分不够可再加)
- 如何关闭指定页面?
- 这句代码有错误吗,还是别的原因?
- 子查询返回的值多于一个.当子查询跟随在=、!=、<、<=、>、>=之后,或子查询用作表达式时,这种情况是不允许的!"
- 如何用C#编写:获取网卡的MAC地址
- c#是否可以开发应用程序(象vc那样运行在一个单独的操作系统中,运行速度和vc编的差不多)?
- (江苏省)哪儿有公司要C#程序员
- 不知道表的字段类型和列数,怎么将DataGridView最后一行写如数据库?
- 怎么单机事件会触发2次单机效果
http://blog.csdn.net/xys_777/archive/2010/06/21/5684442.aspx
@name nvarchar(50),
@Flag int output --返回的值
AS
BEGIN
if (条件)
set @Flag=1
if(条件)
set @Flag=2
END
public int output(string name)
{
try
{
SqlParameter[] parameters = {
new SqlParameter("@name", SqlDbType.NVarChar,50),
new SqlParameter("@Flag",SqlDbType.Int,4)};
parameters[0].Value = name ;
parameters[1].Direction = ParameterDirection.Output; //接受从数据库返回的值
help.executeNonQuery("proc_output", parameters); //help :实例化的help类
return Convert.ToInt32(parameters[1].Value); //返回接收值
}
catch (Exception ex)
{
throw ex;
}
}
dataset _ds = help.executeDataSet("proc_output",parameters);
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlconn;
cmd.CommandText = "过程名";
cmd.CommandType = CommandType.StoredProcedure;
// 创建参数
IDataParameter[] parameters = {
new SqlParameter("@Id", SqlDbType.Int,4) ,
new SqlParameter("@Name", SqlDbType.NVarChar,15) ,
new SqlParameter("@val", SqlDbType.Int,4) // 返回值
};
// 设置参数类型
parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[1].Value = "Name"; // 给输入参数赋值
parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值
// 添加参数
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]); SqlDataAdapter dp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
// 填充dataset
dp.Fill(ds); parameters[0].Value.ToString()set @id = @@IDENTITY
select * from Tb
return @@rowcount
CREATE PROCEDURE sp_AccountRole_Create
@CategoryID int,
@RoleName nvarchar(10),
@Description nvarchar(50),
@RoleID int output
AS
DECLARE @Count int -- 查找是否有相同名称的记录
SELECT @Count = Count(RoleID) FROM Account_Role WHERE
RoleName = @RoleName IF @Count = 0 INSERT INTO Account_Role
(CategoryID, RoleName, Description) valueS
(@CategoryID, @RoleName, @Description) SET @RoleID = @@IDENTITY RETURN 1
GOSqlConnection DbConnection = new SqlConnection(mConnectionString);
SqlCommand command = new SqlCommand( "sp_AccountRole_Create", DbConnection );
DbConnection.Open(connectString);
// 废置SqlCommand的属性为存储过程
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
command.Parameters.Add("@Description", SqlDbType.NVarChar, 50);
command.Parameters.Add("@RoleID", SqlDbType.Int, 4);
// 返回值
command.Parameters.Add("Returnvalue",
SqlDbType.Int,
4, // Size
ParameterDirection.Returnvalue,
false, // is nullable
0, // byte precision
0, // byte scale
string.Empty,
DataRowVersion.Default,
null );command.parameters["@CategoryID"].value = permission.CategoryID;
command.parameters["@RoleName"].value = permission.PermissionName;
command.parameters["@Description"].value = permission.Description;
// 可以返回新的ID值
command.parameters["@RoleID"].Direction = ParameterDirection.Output;int rowsAffected = command.ExecuteNonQuery();
int result = command.parameters["Returnvalue"].value;
int newID = command.parameters["@RoleID"].value;
可以得到三个值,分别是行影响值,存储过程返回值,新的ID值。
SqlCommand comm = new SqlCommand();
comm.Connection = con;
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "PROC_FENYE";
// 创建参数
IDataParameter[] parameters = {
new SqlParameter("@PageCount", SqlDbType.Int,4) ,
new SqlParameter("@PageSize", SqlDbType.Int,4) ,
new SqlParameter("@PageIndex", SqlDbType.Int,4) ,
new SqlParameter("@Condition", SqlDbType.NVarChar,1000),
new SqlParameter("@OrderBy", SqlDbType.NVarChar,50)// 返回值
};
parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[1].Value = PageSize; // 给输入参数赋值
parameters[2].Value = PageIndex; // 给输入参数赋值
parameters[3].Value = Where; // 给输入参数赋值
parameters[4].Value = OrderBy; // 给输入参数赋值
//parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值 //设置参数
comm.Parameters.Add(parameters[0]);
comm.Parameters.Add(parameters[1]);
comm.Parameters.Add(parameters[2]);
comm.Parameters.Add(parameters[3]);
comm.Parameters.Add(parameters[4]);
RePageCount = Convert.ToInt32(parameters[0].Value);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
adapter.Fill(ds);
Close();
return ds.Tables[0];这里那里错了?
SqlCommand comm = new SqlCommand();
comm.Connection = con;
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "PROC_FENYE";
// 创建参数
IDataParameter[] parameters = {
new SqlParameter("@PageCount", SqlDbType.Int,4) ,
new SqlParameter("@PageSize", SqlDbType.Int,4) ,
new SqlParameter("@PageIndex", SqlDbType.Int,4) ,
new SqlParameter("@Condition", SqlDbType.NVarChar,1000),
new SqlParameter("@OrderBy", SqlDbType.NVarChar,50)// 返回值
};
parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[1].Value = PageSize; // 给输入参数赋值
parameters[2].Value = PageIndex; // 给输入参数赋值
parameters[3].Value = Where; // 给输入参数赋值
parameters[4].Value = OrderBy; // 给输入参数赋值
//parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值 //设置参数
comm.Parameters.Add(parameters[0]);
comm.Parameters.Add(parameters[1]);
comm.Parameters.Add(parameters[2]);
comm.Parameters.Add(parameters[3]);
comm.Parameters.Add(parameters[4]);
RePageCount = Convert.ToInt32(parameters[0].Value);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
adapter.Fill(ds);
Close();
return ds.Tables[0];
SqlConnection sqlconn = new SqlConnection();
sqlconn.ConnectionString = "省略";
sqlconn.Open();
SqlCommand sqlcomm = new SqlCommand();
sqlcomm.CommandType = CommandType.StoredProcedure;
sqlcomm.Connection = sqlconn;
sqlcomm.CommandText = "xxxx";
SqlDataAdapter sqlda = new SqlDataAdapter(sqlcomm);
DataSet ds = new DataSet();
sqlda.Fill(ds);
if (ds.Tables.Count > 0)
{
//Do sth ds.Tables[0]
//Do sth ds.Tables[1]
}http://www.hbtiantai.cn