关于调用SQL存储过程的问题

dream_it 2009-12-19 01:09:09

drop procedure P_DJ_TSXX
go

create procedure P_DJ_TSXX
(
@TSMC char(32),
@TSZZ char(20),
@TSJG numeric(10,2),
@CBS char(50),
@FLBH int,
@FLJH char(4),
@JCBZ char(4),
@ZT char(4),
@BZ char(100),
@JG_DM char(4) output,
@JG_XX char(60)output
)
as
BEGIN
begin transaction lfr
insert into DJ_TSXX(
TSMC,
TSZZ,
TSJG,
CBS,
FLBH,
FLJH,
RKSJ,
JCBZ,
ZT)
values(
@TSMC,
@TSZZ,
@TSJG,
@CBZ,
@FLBH,
@FLJH,
getdate(),
@JCBZ,
@BZ);
if @@error<>0 or @@rowcount=0
begin
select @JG_DM='0003'
select @JG_XX='插入数据失败,请检查数据的合法性'
rollback transaction lfr

end
select @JG_DM='0000'
select @JG_XX='数据插入成功!!'
commit transaction lfr

END
GO



前台调用出错!!提示过程或函数P_DJ_TSXX需要参数‘@JG_DM’
但未提供该参数
...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anyi_xyz 2009-12-19
  • 打赏
  • 举报
回复
@JG_DM char(4) output,
@JG_XX char(60)output
这两个值在数据层也要进行赋值的。

parameters[“你的参数名称”].Direction = ParameterDirection.Output;
assky124 2009-12-19
  • 打赏
  • 举报
回复
我一般都是用SqlHelper来调用存储过程的。

具体怎么写不知道。

你在SqlServer中执行下存储过程,看看要什么参数
dream_it 2009-12-19
  • 打赏
  • 举报
回复
代码要怎么写???
小坏猪猪 2009-12-19
  • 打赏
  • 举报
回复
应该是你前台调用的时候少了一个参数
江南小鱼 2009-12-19
  • 打赏
  • 举报
回复
程序中调用output存储过程

static void ExecuteProcedure(string StrConn)

{

string strConn =StrConn;

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

SqlCommand cmd = new SqlCommand("getItemCode", conn);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter[] parameters =

{

new SqlParameter("@itemName1",SqlDbType.VarChar,50),

new SqlParameter("@sizeName1",SqlDbType.VarChar,50),

new SqlParameter("@itemCode",SqlDbType.VarChar,50)

};

parameters[0].Value = "Chai";

parameters[1].Value = "500g";

parameters[2].Direction = ParameterDirection.Output;

foreach (var p in parameters)

{

cmd.Parameters.Add(p);

}

cmd.ExecuteNonQuery();

conn.Close();

//输出值

Console.WriteLine(parameters[2].Value);

}



江南小鱼 2009-12-19
  • 打赏
  • 举报
回复
output参数也要传给存储过程

带输入输出参数的存储过程

create procedure itemCodes

@itemName1 varchar(50),

@sizeName1 varchar(50),

@itemCode varchar(5) output

as

select @itemCode=itemmap.ItemCode from itemmap inner join item on itemmap.ItemCode=item.ItemCode where(item.ItemName1=@itemName1 and item.SizeName1=@sizeName1)

go




static void ExecuteProcedure(string StrConn)

{

string strConn =strConn;

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

SqlCommand cmd = new SqlCommand("getItemCode", conn);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter[] parameters =

{

new SqlParameter("@itemName1",SqlDbType.VarChar,50),

new SqlParameter("@sizeName1",SqlDbType.VarChar,50),

new SqlParameter("@itemCode",SqlDbType.VarChar,50)

};

parameters[0].Value = "Chai";

parameters[1].Value = "500g";

parameters[2].Direction = ParameterDirection.Output;

foreach (var p in parameters)

{

cmd.Parameters.Add(p);

}

cmd.ExecuteNonQuery();

conn.Close();

//输出值

Console.WriteLine(parameters[2].Value);

}


dream_it 2009-12-19
  • 打赏
  • 举报
回复
哪位大侠帮忙下……

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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