存储过程的输出参数调不出来

bolome 2008-09-27 09:59:45
存储过程的输出参数调不出来
param = cmd.Parameters.Add("@out", SqlDbType.Char, 22);
param.Direction = ParameterDirection.Output;

cmd.ExecuteNonQuery();
Button1.Text = cmd.Parameters["@out"].Value.ToString();
...全文
211 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
bolome 2008-09-28
  • 打赏
  • 举报
回复
奇怪又好了.楼上的也试了,可行.楼上的能说说你的方法比我的哪里好?行的话就用你的方法.
tkscascor 2008-09-28
  • 打赏
  • 举报
回复
你原来的方法可以用了?
那我建议用你那个!
我这个方法还要开辟一个空间来存储返回的ds
理论上说应该比你的方法费时
我这样测试 只是想看看是否是cmd.ExecuteNonQuery()的原因
bolome 2008-09-28
  • 打赏
  • 举报
回复
谢谢楼上
bolome 2008-09-27
  • 打赏
  • 举报
回复
试试楼上的
tkscascor 2008-09-27
  • 打赏
  • 举报
回复
存储过程没错 问题可能出在cmd.ExecuteNonQuery() 这个方法是返回受影响的行数.
我在我这里测试通过 不过是返回一个结果集!

protected void Button1_Click(object sender, EventArgs e)
{
SqlParameter[] paraList = new SqlParameter[2];
paraList[0] = new SqlParameter("@ID", SqlDbType.VarChar,20);
paraList[0].Value = "hoid";
paraList[1] = new SqlParameter("@out", SqlDbType.VarChar,20);
paraList[1].Direction = ParameterDirection.Output;
SelectCmd("Inter_xd", "ds", paraList);
Button1.Text = paraList[1].Value.ToString();
}
#region
/// <summary>
/// 执行查询命令 用于查询类操作
/// </summary>
/// <param name="strProcName">存储过程名</param>
/// <param name="strTabName">返回的表名</param>
/// <param name="paraList">参数列表</param>
/// <returns>返回一个结果集</returns>
public static DataSet SelectCmd(string strProcName, string strTabName, SqlParameter[] paraList)
{

DataSet ds = null;
try
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(strProcName, conn);
cmd.CommandType = CommandType.StoredProcedure;
if (paraList != null)
{
foreach (SqlParameter para in paraList)
{
cmd.Parameters.Add(para);
}
}
SqlDataAdapter sa = new SqlDataAdapter(cmd);
ds = new DataSet();
sa.Fill(ds, strTabName);

return ds;
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
wuyi8808 2008-09-27
  • 打赏
  • 举报
回复
试试这个:
cmd.CommandText = "EXEC Inter_xd(@ID,@stat,@out)";
cmd.CommandType = CommandType.Text;
param = cmd.Parameters.Add("@out", SqlDbType.Char, 22);
param.Direction = ParameterDirection.Output;

cmd.ExecuteNonQuery();
Button1.Text = cmd.Parameters["@out"].Value.ToString();
bolome 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wuyi8808 的回复:]
如果
param.Direction = ParameterDirection.Output;

cmd.CommandText 必须含有 @out 才能取得 @out 的值。
[/Quote]cmd.CommandText里就是存储过程名啊,存储过程里是有@out的。
tkscascor 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tkascor 的回复:]
param.Direction = ParameterDirection.Output;
改成 cmd.Parameters["@out"].Value= ParameterDirection.Output;
试试!
[/Quote]
看错了 不用试拉
wuyi8808 2008-09-27
  • 打赏
  • 举报
回复
如果
param.Direction = ParameterDirection.Output;

cmd.CommandText 必须含有 @out 才能取得 @out 的值。
tkscascor 2008-09-27
  • 打赏
  • 举报
回复
param.Direction = ParameterDirection.Output;
改成 cmd.Parameters["@out"].Value= ParameterDirection.Output;
试试!

bolome 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyi8808 的回复:]
cmd.CommandText 语句呢,是否含有 @out ?
[/Quote]
 cmd.CommandText = "Inter";
bolome 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyi8808 的回复:]
C# codeparam.Direction = ParameterDirection.ReturnValue;
[/Quote]改成这样会出现错误提示
wuyi8808 2008-09-27
  • 打赏
  • 举报
回复
cmd.CommandText 语句呢,是否含有 @out ?
bolome 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tkascor 的回复:]
你的存储过程里面 @out 是否设置没output 参数?
还是你的@out 仅仅是return 回来的?
[/Quote]
ALTER proc [dbo].[Inter_xd]
--输入信息
@ID nchar(32),
@stat nchar(10),
@out char(17) output
as
set @out=@ID
wuyi8808 2008-09-27
  • 打赏
  • 举报
回复
param.Direction = ParameterDirection.ReturnValue;
wuyi8808 2008-09-27
  • 打赏
  • 举报
回复
cmd.CommandText 贴出来看看,里面是否含有 @out ?
bolome 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tkascor 的回复:]
你的存储过程里面 @out 是否设置没output 参数?
还是你的@out 仅仅是return 回来的?
[/Quote]是的
wuyi8808 2008-09-27
  • 打赏
  • 举报
回复
没看出什么问题。
tkscascor 2008-09-27
  • 打赏
  • 举报
回复
你的存储过程里面 @out 是否设置没output 参数?
还是你的@out 仅仅是return 回来的?

62,244

社区成员

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

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

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

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