接收存储过程返回值 比如一个存储过程create proc aa@a int output asset @a=100那我在aspx.cs页面如何取得@a的值呢。。? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 例如在向数据库添加新数据时,需要检测是否有重复本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。存储过程如下:CREATE PROCEDURE DInstitute_Insert@InstituteNO nvarchar(6),@InstituteName nvarchar(40) ASdeclare @return int,@count intif(ltrim(rtrim(@InstituteName))='' or ltrim(rtrim(@InstituteNO))='') select @return=3--返回3表示提交的数据有空值elsebegin select @count=count(1) from DInstitute where InstituteNO=@InstituteNO if(@count>0) select @return=1--返回1表示编号有重复 else begin insert into DInstitute (InstituteNO,InstituteName) values (@InstituteNO,@InstituteName) if(@@error>0) select @return=2--返回2表示数据操作错误 else select @return=0--返回0表示数据操作成功 endendreturn @returnGO其中DInstitute 是一个学院信息表。只有InstituteNO(学院编号)、InstituteName(学院名称)两个字段。在C#中调用本存储过程的代码如下://执行插入操作 SqlCommand com1 = new SqlCommand("DInstitute_Insert", DBcon); if (com1.Connection.State == ConnectionState.Closed) com1.Connection.Open(); com1.CommandType = CommandType.StoredProcedure; com1.Parameters.Add(new SqlParameter("@InstituteNO",SqlDbType.NVarChar,6)); com1.Parameters.Add(new SqlParameter("@InstituteName", SqlDbType.NVarChar, 40)); com1.Parameters.Add(new SqlParameter("@return", SqlDbType.Int)); com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue; com1.Parameters["@InstituteNO"].Value = t_NO.Text; com1.Parameters["@InstituteName"].Value = t_name.Text; try { com1.ExecuteScalar(); } catch(SqlException ee) { DB.msgbox("操作失败!"+ee.Message.ToString()); return; } finally { com1.Connection.Close(); } string temp = com1.Parameters["@return"].Value.ToString(); //返回0表示数据操作成功 //返回1表示编号有重复 //返回2表示数据操作错误 //返回3表示提交的数据有空值 switch (temp) { case "0": DB.msgbox("添加成功!"); break; case "1": DB.msgbox("编号有重复!"); break; case "2": DB.msgbox("数据操作错误!"); break; case "3": DB.msgbox("提交的数据有空值!"); break; } Binding(); //刷新datagrid com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue; 这句话的意思是? SqlConnection conn = ""; conn.Open(); SqlCommand MyCommand = new SqlCommand("", conn); MyCommand.CommandType = CommandType.StoredProcedure; MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int)); MyCommand.Parameters["@a"].Value = 10; MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int)); MyCommand.Parameters["@b"].Value = 20; MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int)); MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue; MyCommand.ExecuteNonQuery(); Response.Write(MyCommand.Parameters["@return"].Value.ToString()); SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()); conn.Open(); SqlCommand MyCommand = new SqlCommand("", conn); MyCommand.CommandType = CommandType.StoredProcedure; MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int)); MyCommand.Parameters["@a"].Value = 20; MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int)); MyCommand.Parameters["@b"].Value = 20; MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int)); MyCommand.Parameters["@c"].Direction = ParameterDirection.Output; MyCommand.ExecuteNonQuery(); Response.Write(MyCommand.Parameters["@c"].Value.ToString()); ReturnValue 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值。 winform中DataGridView绑定数据。 C# sendmessage 怎么设置label的text 没反应 saucer(思归) 关于C++生成Dll的问题 ListView控件要怎么取到里面项的值 vs2008网页布局 UDP问题,Gprs上来的信息,怎么记忆住设备上来的socket?然后能下发 关于WPF中的dataGrid 用DLLImport和Reference导入一个dll到工程里有什么不同吗? 关于无边框窗体的一些问题 Remoting外网客户端无法返回远程对象 求!C#线程发消息到主窗体!在线等
本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。
存储过程如下:
CREATE PROCEDURE DInstitute_Insert
@InstituteNO nvarchar(6),@InstituteName nvarchar(40)
AS
declare @return int,@count int
if(ltrim(rtrim(@InstituteName))='' or ltrim(rtrim(@InstituteNO))='')
select @return=3--返回3表示提交的数据有空值
else
begin
select @count=count(1) from DInstitute where InstituteNO=@InstituteNO
if(@count>0)
select @return=1--返回1表示编号有重复
else
begin
insert into DInstitute (InstituteNO,InstituteName) values (@InstituteNO,@InstituteName)
if(@@error>0)
select @return=2--返回2表示数据操作错误
else
select @return=0--返回0表示数据操作成功
end
end
return @return
GO
其中DInstitute 是一个学院信息表。只有InstituteNO(学院编号)、InstituteName(学院名称)两个字段。在C#中调用本存储过程的代码如下:
//执行插入操作
SqlCommand com1 = new SqlCommand("DInstitute_Insert", DBcon);
if (com1.Connection.State == ConnectionState.Closed)
com1.Connection.Open();
com1.CommandType = CommandType.StoredProcedure;
com1.Parameters.Add(new SqlParameter("@InstituteNO",SqlDbType.NVarChar,6));
com1.Parameters.Add(new SqlParameter("@InstituteName", SqlDbType.NVarChar, 40));
com1.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
com1.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
com1.Parameters["@InstituteNO"].Value = t_NO.Text;
com1.Parameters["@InstituteName"].Value = t_name.Text;
try
{
com1.ExecuteScalar();
}
catch(SqlException ee)
{
DB.msgbox("操作失败!"+ee.Message.ToString());
return;
}
finally
{
com1.Connection.Close();
}
string temp = com1.Parameters["@return"].Value.ToString();
//返回0表示数据操作成功
//返回1表示编号有重复
//返回2表示数据操作错误
//返回3表示提交的数据有空值
switch (temp)
{
case "0":
DB.msgbox("添加成功!");
break;
case "1":
DB.msgbox("编号有重复!");
break;
case "2":
DB.msgbox("数据操作错误!");
break;
case "3":
DB.msgbox("提交的数据有空值!");
break;
}
Binding(); //刷新datagrid
这句话的意思是?
SqlConnection conn = "";
conn.Open();
SqlCommand MyCommand = new SqlCommand("", conn);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
MyCommand.Parameters["@a"].Value = 10;
MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
MyCommand.Parameters["@b"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@return"].Value.ToString());
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommand MyCommand = new SqlCommand("", conn);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
MyCommand.Parameters["@a"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
MyCommand.Parameters["@b"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int));
MyCommand.Parameters["@c"].Direction = ParameterDirection.Output;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@c"].Value.ToString());