存储过程返回值问题

wangmingmi 2009-04-30 02:51:45
存储过程

Creat PROCEDURE dbo.test

(
@i int,
@a int output

)

AS

set @a=99

select 1
RETURN



SqlCommand cmd = new SqlCommand(storedProcName, conn);
cmd.CommandType = CommandType.StoredProce[code=SQL]
dure;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
cmd.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int,4,ParameterDirection.ReturnValue,
false,0,0,string.Empty,DataRowVersion.Default,null));

rowsAffected = cmd.ExecuteNonQuery();
result = (int)cmd.Parameters["ReturnValue"].Value;
conn.Close();
[/code]

为什么 result=0呢 ?
...全文
110 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
云想慕尘 2009-05-01
  • 打赏
  • 举报
回复
楼主不厚道,大家是在帮谁解决问题呀,什么态度
wangmingmi 2009-05-01
  • 打赏
  • 举报
回复
不是我什么态度 看了很气愤~不懂就算了 非要装懂 问return 回答output你说这。。都5角的人了 真怀疑这些人的水平。。
白s菜 2009-04-30
  • 打赏
  • 举报
回复
.............
wangmingmi 2009-04-30
  • 打赏
  • 举报
回复
楼上你也是5角了。。。你这答案。。和我给的有区别吗?说了半天理论
toxxj 2009-04-30
  • 打赏
  • 举报
回复
在默认情况下,每个存储过程返回0值。
如果要改更返回的值,就必须使用Return语句来返回你想要的数值.

存储过程有两种方式返回值:
1.通过output 参数,可以设置多个output参数
2.通过return来实现 ,只能有一个返回值




wangmingmi 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 llsen 的回复:]
parameters[7].Direction = ParameterDirection.Output;
parameters[8].Direction = ParameterDirection.Output;

DataTable dt1 = DbHelperSQL.RunProcedure("SP_PageList", parameters, "table").Tables[0];
string sss = parameters[7].Value.ToString();
string ssss = parameters[8].Value.ToString();

output型输出参数
[/Quote]
拜托。。你也是个5角了的人了
我问的是return 你说的什么?output
output 和return不是一个概念 明白?
一个是返回值 一个是输出参数
用查询分析器 执行 output的值=99 return的值=1
现在存储过程里 outpu是对的 但是 return的值=0
。。期待答案谢谢

wangmingmi 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cpp2017 的回复:]
你把存储过程最后一句改成 return 1就有值了.
[/Quote]
都不明白你在说什么
用查询分析器 执行 return 的值 就是 select 的值 也就是 1
现在用存储过程调不出来 请先看清问题在回答 谢谢
izbox 2009-04-30
  • 打赏
  • 举报
回复

Creat PROCEDURE dbo.test
(
@i int,
@a int output
)

AS
set @a=99
select 1


直接select 不要return
teerhu 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 llsen 的回复:]
parameters[7].Direction = ParameterDirection.Output;
parameters[8].Direction = ParameterDirection.Output;

DataTable dt1 = DbHelperSQL.RunProcedure("SP_PageList", parameters, "table").Tables[0];
string sss = parameters[7].Value.ToString();
string ssss = parameters[8].Value.ToString();

output型输出参数
[/Quote]
支持
指间的风 2009-04-30
  • 打赏
  • 举报
回复
Creat PROCEDURE dbo.test

(
@i int,
@a int output

)

AS

set @a=99

return @a
RETURN
dengxiao1981 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cpp2017 的回复:]
你把存储过程最后一句改成 return 1就有值了.
[/Quote]


up
llsen 2009-04-30
  • 打赏
  • 举报
回复
parameters[7].Direction = ParameterDirection.Output;
parameters[8].Direction = ParameterDirection.Output;

DataTable dt1 = DbHelperSQL.RunProcedure("SP_PageList", parameters, "table").Tables[0];
string sss = parameters[7].Value.ToString();
string ssss = parameters[8].Value.ToString();


output型输出参数
llsen 2009-04-30
  • 打赏
  • 举报
回复
#region 检索数据
/// <summary>
/// 获取民族代码
/// </summary>
/// <param name="PageIndex">页码</param>
/// <param name="OrderBy">排序字段</param>
/// <param name="Where">条件</param>
/// <returns>结果集</returns>
public DataSet GetList(int PageIndex, string OrderBy, string Where)
{
try
{
SqlParameter[] parameters = {
new SqlParameter("@tbname", SqlDbType.NVarChar),
new SqlParameter("@FieldKey", SqlDbType.NVarChar),
new SqlParameter("@PageCurrent", SqlDbType.Int),
new SqlParameter("@PageSize", SqlDbType.Int),
new SqlParameter("@FieldShow", SqlDbType.NVarChar),
new SqlParameter("@FieldOrder", SqlDbType.NVarChar),
new SqlParameter("@Where", SqlDbType.NVarChar),
new SqlParameter("@RecordCount", SqlDbType.Int),
new SqlParameter("@PageCount", SqlDbType.Int)
};
parameters[0].Value = "sysj";
parameters[1].Value = "ksh";
parameters[2].Value = PageIndex;
parameters[3].Value = 10;
parameters[4].Value = "*";
parameters[5].Value = OrderBy;
parameters[6].Value = Where;

parameters[7].Direction = ParameterDirection.Output;
parameters[8].Direction = ParameterDirection.Output;

DataTable dt1 = DbHelperSQL.RunProcedure("SP_PageList", parameters, "table").Tables[0];
string sss = parameters[7].Value.ToString();
string ssss = parameters[8].Value.ToString();

DataTable dt = new DataTable();
dt.Columns.Add("Counts", typeof(string));
dt.Columns.Add("Pages", typeof(string));

DataRow dr = dt.NewRow();
dr["Counts"] = sss;
dr["Pages"] = ssss;

dt.Rows.Add(dr);

DataSet ds = new DataSet();
ds.Tables.Add(dt1.Copy());
ds.Tables.Add(dt.Copy());

return ds;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
cpp2017 2009-04-30
  • 打赏
  • 举报
回复
你把存储过程最后一句改成 return 1就有值了.

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧