先说一下存储过程:这是参数:
1.发表文章的用户的编号
2.文章标题
3.文章内容
4.文章所属栏目的编号
5.有效期
6.如果发表成功,返回该文章的唯一编号
返回值说明:
-1发生未知错误
0发表成功
1指定用户不存在
2存在同标题文章
3指定栏目不存在
4有效期不合规范
比如:
我成功发表了文章,返回了 文章编号 和 0
@ArticleNO = 68
@RETURN_VALUE = 0
这是我写的c# 参数 SqlParameter[] parameters = {
new SqlParameter("@UserNO",SqlDbType.Int),
new SqlParameter("@Title",SqlDbType.NVarChar ,100),
new SqlParameter("@Content",SqlDbType.NVarChar),
new SqlParameter("@TopicNO",SqlDbType.TinyInt),
new SqlParameter("@Expire",SqlDbType.Int),
new SqlParameter("@ArticleNO",SqlDbType.Int),
new SqlParameter("@RETURN_VALUE",SqlDbType.Int)}; parameters[0].Value = 32;
parameters[1].Value = "a2345555sf";
parameters[2].Value = "adf24ad5555fad--fasf";
parameters[3].Value = 1;
parameters[4].Value = 1;
parameters[5].Value = ParameterDirection.Output;
parameters[6].Value = ParameterDirection.ReturnValue;
但是VS提示: 为过程或函数 Ins_Article 指定了过多的参数。
如果我删掉最后一个参数: SqlParameter[] parameters = {
new SqlParameter("@UserNO",SqlDbType.Int),
new SqlParameter("@Title",SqlDbType.NVarChar ,100),
new SqlParameter("@Content",SqlDbType.NVarChar),
new SqlParameter("@TopicNO",SqlDbType.TinyInt),
new SqlParameter("@Expire",SqlDbType.Int),
new SqlParameter("@ArticleNO",SqlDbType.Int)}; parameters[0].Value = 32;
parameters[1].Value = "a2345555sf";
parameters[2].Value = "adf24ad5555fad--fasf";
parameters[3].Value = 1;
parameters[4].Value = 1;
parameters[5].Value = ParameterDirection.Output;它只返回一个结果。请问上面这种情况怎么获取 2个返回值?
1.发表文章的用户的编号
2.文章标题
3.文章内容
4.文章所属栏目的编号
5.有效期
6.如果发表成功,返回该文章的唯一编号
返回值说明:
-1发生未知错误
0发表成功
1指定用户不存在
2存在同标题文章
3指定栏目不存在
4有效期不合规范
比如:
我成功发表了文章,返回了 文章编号 和 0
@ArticleNO = 68
@RETURN_VALUE = 0
这是我写的c# 参数 SqlParameter[] parameters = {
new SqlParameter("@UserNO",SqlDbType.Int),
new SqlParameter("@Title",SqlDbType.NVarChar ,100),
new SqlParameter("@Content",SqlDbType.NVarChar),
new SqlParameter("@TopicNO",SqlDbType.TinyInt),
new SqlParameter("@Expire",SqlDbType.Int),
new SqlParameter("@ArticleNO",SqlDbType.Int),
new SqlParameter("@RETURN_VALUE",SqlDbType.Int)}; parameters[0].Value = 32;
parameters[1].Value = "a2345555sf";
parameters[2].Value = "adf24ad5555fad--fasf";
parameters[3].Value = 1;
parameters[4].Value = 1;
parameters[5].Value = ParameterDirection.Output;
parameters[6].Value = ParameterDirection.ReturnValue;
但是VS提示: 为过程或函数 Ins_Article 指定了过多的参数。
如果我删掉最后一个参数: SqlParameter[] parameters = {
new SqlParameter("@UserNO",SqlDbType.Int),
new SqlParameter("@Title",SqlDbType.NVarChar ,100),
new SqlParameter("@Content",SqlDbType.NVarChar),
new SqlParameter("@TopicNO",SqlDbType.TinyInt),
new SqlParameter("@Expire",SqlDbType.Int),
new SqlParameter("@ArticleNO",SqlDbType.Int)}; parameters[0].Value = 32;
parameters[1].Value = "a2345555sf";
parameters[2].Value = "adf24ad5555fad--fasf";
parameters[3].Value = 1;
parameters[4].Value = 1;
parameters[5].Value = ParameterDirection.Output;它只返回一个结果。请问上面这种情况怎么获取 2个返回值?
解决方案 »
- MVC-- 使用LINQ联合查询多表结果集的返回
- froeach的问题
- 新人求教:数据库合并的问题?
- 修改数据库报错..........................................
- 高级皮肤库skinctrl 源码
- 100分求一个关于货币转换的一个算法
- 请教大家 论坛群发器的原理 以及实现方式
- 高分 在线等。。如何用DataGrid控件来更新一个具有两个主键的数据表?
- 帮忙看一个管理系统的表的设计的怎么样!
- WinForm中下列e.Graphics.DrawImage输出以豪米为单位
- Dataset可否抽象?
- C# Windows窗体开发中窗体form显示时老跑到VS界面后面
parameters[6].Direction = ParameterDirection.ReturnValue; 多看MSDN,细心检查...
new SqlParameter("@UserNO",SqlDbType.Int),
new SqlParameter("@Title",SqlDbType.NVarChar ,100),
new SqlParameter("@Content",SqlDbType.NVarChar),
new SqlParameter("@TopicNO",SqlDbType.TinyInt),
new SqlParameter("@Expire",SqlDbType.Int),
new SqlParameter("@ArticleNO",SqlDbType.Int),
new SqlParameter("@RETURN_VALUE",SqlDbType.Int)}; parameters[0].Value = 32;
parameters[1].Value = "a2345555sf";
parameters[2].Value = "adf24ad5555fad--fasf";
parameters[3].Value = 1;
parameters[4].Value = 1;
parameters[5].Value = ParameterDirection.Output;
parameters[6].Value = ParameterDirection.ReturnValue;
但是VS提示 : 为过程或函数 Ins_Article 指定了过多的参数。
RETURN_VALUE是默认自带的
你的参数个数是
create proc ss
@,,
as
这里面的参数,并不需要传递RETURN_VALUE
除非你也加了这个参数接收值的时候用1楼的方法,
@a1,@a2,@a3,@a4,@a5,@a6,
如果想得到@a5,@a6两个返回的值,
把这两个都写成ParameterDirection.Output都可以了。
@UserNo int,
@Title nvachar(100),
@Content nvarchar(250),
@TopicNO int,
@AriticleNO int
)
as
declare @count int,@return int
select @count=count(userNo) from t_Article where userNo=@UserNo
if(@count>0)
set @return=1--返回表示指定用户不存在
else
begin
select @count=count(title) from t_Article where title=@Title
if(@count>0)
set @return=2--返回表示同标题文章存在
else
begin
select @count=count(topicNO) from t_Article where topicNO=@TopicNO
if(@count==0)
set @return=3--返回表示指定栏目不存在
else
begin
--此处判断有效期是否和规范(if语句)
--如果不合规范set @return=4
else
BEGIN TRANSACTION
insert into t_Article values(@UserNo,@Title,@Content,@TopicNO,@AritcleNO)
if(@@ERROR<>0)
begin
ROLLBACK TRANSACTION
set @return=-1--返回表示插入失败
end
else
begin
COMMIT TRANSACTION
set @return=0--返回表示插入成功
end
end
end
end
return @return
SqlParameter[] parameters = {
new SqlParameter("@UserNO",32),
new SqlParameter("@Title","a2345555sf"),
new SqlParameter("@Content","adf24ad5555fad--fasf"),
new SqlParameter("@TopicNO",1),
new SqlParameter("@Expire",1),
new SqlParameter("@ArticleNO",1),
new SqlParameter("@RETURN_VALUE",SqlDbType.Int)}; parameters[6].Direction = ParameterDirection.ReturnValue;
然后执行 SqlCommand.ExecuteScalar();方法,要设置cmd.CommandType = CommandType.StoredProcedure;
读取返回值
string strTmp = cmd.Parameters["@return"].Value.ToString();
switch (strTmp) { case "0": Console.WriteLine("添加成功"); break; case "1": Console.WriteLine("数据有重复"); break; case "-1": Console.WriteLine("数据操作失败"); break; .. }