如何在C#中将值传给存储过程

billlyh 2009-10-01 08:57:58
如何在C#中将值传给存储过程

CREATE PROCEDURE car_tempINTOcar
as
declare @userID nvarchar (50)
select userID from car_temp where userID=@userID
想在C#中将值传给@userID
SqlParameter[] par = new SqlParameter[1];
par[0] = new SqlParameter("@userID", SqlDbType.NVarChar, 50);
par[0].Direction = System.Data.ParameterDirection.Output;
par[0].Value = Session["userID"];

sql = DA.DataAccess.ExecuteScalar(DA.DataAccess.conn_WebMarket(), CommandType.StoredProcedure, "car_tempINTOcar",

par).ToString();

程序却报错,
过程 car_tempINTOcar 没有参数,但却为该过程提供了参数。

哪位给指正下,是存储过程写错了,
还是C#中par[0].Direction = System.Data.ParameterDirection.Output;这里错了?
...全文
220 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdx808 2009-10-19
  • 打赏
  • 举报
回复
mark
wartim 2009-10-02
  • 打赏
  • 举报
回复
CREATE PROCEDURE car_tempINTOcar
输入参数1,
输入参数2,
输入参数3
as
输出参数
ivws_19 2009-10-02
  • 打赏
  • 举报
回复
嗯,你的存储过程中没有定义参数,改成楼上几位所写的形式
create procedure ......
@userID nvarchar(50)
as begin
....
end
tmd456 2009-10-02
  • 打赏
  • 举报
回复
修改存储过程
CREATE PROCEDURE car_tempINTOcar
@userID nvarchar (50)
as
select userID from car_temp where userID=@userID
wuyq11 2009-10-01
  • 打赏
  • 举报
回复
CREATE PROCEDURE car_tempINTOcar
@UserID nvarchar (50)
as
select userID from car_temp where userID=@userID


SqlParameter[] par = {
new SqlParameter("@userID", SqlDbType.NVarChar, 50)
};
par [0].Value = Session["userID"];
camperer 2009-10-01
  • 打赏
  • 举报
回复

CREATE PROCEDURE car_tempINTOcar
@uid nvarchar (50),@uidOut nvarchar (50) OUTPUT
as
select @uidOut=userID from car_temp where userID=@uid
GO


然后你在C#代码里要定义两个参数,一个输入参数@uid,一个输出参数uidOut。
当然也可用ReturnValue,不过只能Return一个返回值。
oneatree 2009-10-01
  • 打赏
  • 举报
回复
CREATE PROCEDURE car_tempINTOcar
@userID nvarchar (50)
as
select userID from car_temp where userID=@userID
camperer 2009-10-01
  • 打赏
  • 举报
回复
顶3楼。
看你的C#语句par[0].Direction = System.Data.ParameterDirection.Output;这里是输出
但是你的存储过程并没有这个返回值。存储过程里那个@UserID更像是作为一个输入值使用的。
huming_h 2009-10-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 billlyh 的回复:]
2楼,我用的是sql2000,你的写法是sql2005的吧
[/Quote]
创建存储过程2000跟2005有区别吗??
billlyh 2009-10-01
  • 打赏
  • 举报
回复
2楼,我用的是sql2000,你的写法是sql2005的吧
billlyh 2009-10-01
  • 打赏
  • 举报
回复
@userID不需要申明吗
  • 打赏
  • 举报
回复


CREATE PROCEDURE car_tempINTOcar
@userID int
as
select userID from car_temp where userID=@userID


par[0].Direction = System.Data.ParameterDirection.Output;这里错了
你在存储过程中声明的不是输出参数

参考:

SqlConnection conn=new SqlConnection("server=.;database=DBForADO;uid=sa;pwd=;");
SqlDataAdapter sda=new SqlDataAdapter("SqlAndProc_Login_Insert",conn);
sda.SelectCommand.CommandType=CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@name",this.textBox1.Text);
sda.SelectCommand.Parameters.Add("@pwd",this.textBox2.Text);
DataSet ds=new DataSet();
sda.Fill(ds,0,0,"login");
bind();

ADO.NET :http://blog.sina.com.cn/s/blog_5ea9354f0100d9eq.html
huming_h 2009-10-01
  • 打赏
  • 举报
回复
修改存储过程
CREATE PROCEDURE car_tempINTOcar
@userID nvarchar (50)
as
select userID from car_temp where userID=@userID
huming_h 2009-10-01
  • 打赏
  • 举报
回复
过程 car_tempINTOcar 没有参数,但却为该过程提供了参数。
------
错误信息很详细了。存储过程没有参数。

110,566

社区成员

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

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

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