1请问test1,test2存储过程含义是否相同
2如何在页面中调用test1存储过程返回的值
简写如下:
SqlParameter[] para=new SqlParameter( "@UserID ", SqlDbType.Int, 4)
parameters[""@UserID"].Direction = ParameterDirection.Output;调用@BusinessID 的返回值
但如何调用return的返回的值,望大家指点
create PROCEDURE [dbo].[test1]
@StaffID numeric(5) , @FixingID numeric(5) , @BusinessID numeric(5) OUTPUTAS INSERT INTO TBL_Business (N_StaffID , N_FixingID) VALUES (@StaffID , @FixingID) SET @BusinessID= @@IDENTITY RETURN @@rowcount
create PROCEDURE [dbo].[test2]@StaffID numeric(5) , @FixingID numeric(5) , @BusinessID numeric(5) OUTPUT, @Row output intAS INSERT INTO TBL_Business (N_StaffID , N_FixingID) VALUES (@StaffID , @FixingID) SET @BusinessID= @@IDENTITY set @Row =@@RowCount
2如何在页面中调用test1存储过程返回的值
简写如下:
SqlParameter[] para=new SqlParameter( "@UserID ", SqlDbType.Int, 4)
parameters[""@UserID"].Direction = ParameterDirection.Output;调用@BusinessID 的返回值
但如何调用return的返回的值,望大家指点
create PROCEDURE [dbo].[test1]
@StaffID numeric(5) , @FixingID numeric(5) , @BusinessID numeric(5) OUTPUTAS INSERT INTO TBL_Business (N_StaffID , N_FixingID) VALUES (@StaffID , @FixingID) SET @BusinessID= @@IDENTITY RETURN @@rowcount
create PROCEDURE [dbo].[test2]@StaffID numeric(5) , @FixingID numeric(5) , @BusinessID numeric(5) OUTPUT, @Row output intAS INSERT INTO TBL_Business (N_StaffID , N_FixingID) VALUES (@StaffID , @FixingID) SET @BusinessID= @@IDENTITY set @Row =@@RowCount
不相同
output参数可以有多个,可以是除ntext,image,nbinary之外的所有类型
返回值只能有一个,而且必须是整型
SqlParameter[] para=new SqlParameter( "@UserID ", SqlDbType.Int, 4)
parameters[""@UserID"].Direction = ParameterDirection.Output;调用@BusinessID 的返回值
在数据库访问层写个方法:
public int ExecoutID(string cmdtext,SqlParameter[] paras)
{
if(conn.State!=ConnectionState.Open)
{
conn.Open();
}
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;
cmd.CommandText=cmdtext;
cmd.CommandType=CommandType.StoredProcedure;
int MAXID=0;
if(paras!=null && paras.Length>0)
{
for(int i=0 ; i<paras.Length;i++)
{
cmd.Parameters.Add(paras[i]);
}
}
try
{
cmd.ExecuteNonQuery();
if(paras!=null && paras.Length>0)
{
for(int i=0 ; i<paras.Length;i++)
{
if(paras[i].Direction==ParameterDirection.Output)
{
MAXID= Convert.ToInt32(paras[i].Value);
}
}
}
return MAXID; }
实体类里面这样写:
public int sfadd()
{
SqlParameter[] paras=new SqlParameter[2];
paras[1]=new SqlParameter("@city",SqlDbType.VarChar,50);
paras[1].Value=city;
paras[0]=new SqlParameter("@id",SqlDbType.Int);
paras[0].Direction=ParameterDirection.Output;
return db.ExecoutID("test1",paras);
}在界面层就可以调用sfadd()方法取到返回值了。