您的位置:程序门 -> .net技术 -> c#



有谁能完整告诉小弟在代码中接收存储过程的一个值!?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


有谁能完整告诉小弟在代码中接收存储过程的一个值!?[已结贴,结贴人:airfish108]
发表于:2007-03-14 15:59:48 楼主
例如在存储过程定义了一个
@temp= '1 ',
我想在c#代码中获得这个 '1 '(asp.net),应该怎么写!?我已经查了好多资料~没有找到解决办法~谢谢各位赐教!!
发表于:2007-03-14 16:01:241楼 得分:0
http://www.baidu.com/s?wd=c%23+%b4%e6%b4%a2%b9%fd%b3%cc%b7%b5%bb%d8%d6%b5&cl=3
发表于:2007-03-14 16:02:562楼 得分:0
看这个;

http://www.cnblogs.com/302soft/archive/2007/01/09/615667.html
发表于:2007-03-14 16:12:523楼 得分:40
有return   和   output两种方式.

返回值的话
system.data.sqlclient.sqlparameter   p   =   new   system.data.sqlclient.sqlparameter( "@return_value ",   system.data.sqldbtype.int,   4);
p.direction   =   system.data.parameterdirection.returnvalue;

存储过程中大概会写:

return   @temp

--------------------------

output参数的话
system.data.sqlclient.sqlparameter   p   =   new   system.data.sqlclient.sqlparameter( "@temp ",   system.data.sqldbtype.int,   4);
p.direction   =   system.data.parameterdirection.output;

存储过程中大概会写:

@temp   int   output

-------------------------

最后EXECutenonquery()以后取p.value
发表于:2007-03-14 16:16:184楼 得分:0
大哥~不要骗小弟啊!这两个一个链百度,一个链别的网站~这样不好吧~谢谢高手们帮忙啊!快帮帮我吧~
发表于:2007-03-14 16:16:495楼 得分:0
对了,还有一个,如果存储过程中是

select   @temp

的方式.

这样的话,c#中使用

object   val   =   cmd.EXECutescalar();

val就是返回的temp的值喽.根据类型再转换就可以了.

发表于:2007-03-14 16:17:566楼 得分:0
上边说了三种不同的办法,主要是看你的存储过程是如何写的.

才好给你具体代码呀.
发表于:2007-03-14 16:18:517楼 得分:0
y7967()7457614y()   (   )   信誉:98         blog  
讲的很好很全了:)
发表于:2007-03-14 16:23:248楼 得分:0
另外注意一点,如果你同时使用了datareader返回数据集,那么在datareader关闭之前,你是取不到返回值的.
发表于:2007-03-14 16:34:129楼 得分:0
哇~~谢谢谢谢~我先看看~刚才也是这么写的~但接收的值错了~不知道为什么~过一会研究好了给分~谢谢!!!!
发表于:2007-03-14 16:38:0110楼 得分:0
openidxfile
发表于:2007-03-14 16:38:5011楼 得分:0
看来我要写的详细点了~值还是错的~存储过程如下:
set   ansi_nulls   on
set   quoted_identifier   on
go


--EXEC   storeexchangesdetailedit   '1 ', '2007-01-01 ',1, '1 ', '1 ',1,1

alter   procedure   [dbo].[storeexchangesdetailedit]
                  @temp   int   output
as
begin
set   nocount   on;

return   @temp

end
发表于:2007-03-14 16:39:2612楼 得分:0
很好很全了:)
发表于:2007-03-14 16:39:2713楼 得分:0
那代码中怎么写?
发表于:2007-03-14 17:36:3914楼 得分:0
airfish108()   (   )   信誉:100         blog     2007-3-14   16:38:50     得分:   0    
 
 
     
看来我要写的详细点了~值还是错的~存储过程如下:
set   ansi_nulls   on
set   quoted_identifier   on
go


--EXEC   storeexchangesdetailedit   '1 ', '2007-01-01 ',1, '1 ', '1 ',1,1

alter   procedure   [dbo].[storeexchangesdetailedit]
                  @temp   int   output
as
begin
set   nocount   on;

return   @temp

end

----------

你这儿没有看见对@temp的赋值。

发表于:2007-03-14 17:41:3915楼 得分:0
如果你要return   ,那不必在前边定义:

  @temp   int   output

可以这样:

alter   procedure   [dbo].[storeexchangesdetailedit]
as
begin

declare   @temp   int   --相当于临时变量
set   @temp   =   1
return   @temp

end

如果要使用output,那就不必要return,

如:


alter   procedure   [dbo].[storeexchangesdetailedit]
@temp   int   output
as
begin

set   @temp   =   1

end


发表于:2007-03-14 17:43:0616楼 得分:0
所以存储过程不同的写法,在c#中获取返回值会有不同.你好好理解他们之间的差别.

发表于:2007-03-15 09:59:4917楼 得分:10
--方法一
create   procedure   insertcustomer
@customername   varchar(100)
as
declare   @return   int
insert   into   customer   values(@customername)
set   @return=@@identity
return   @return
go

--方法二
create   procedure   insertcustomer2
@customername   varchar(100),
@return   int   output
as
insert   into   customer   values(@customername)
set   @return=@@identity
return
go

-------------------cs代码-----------------------
//方法一
                sqlconnection   con   =   new   sqlconnection( "server=.;database=master;uid=sa;pwd=; ");
                sqlcommand   cmd   =   new   sqlcommand( "insertcustomer ",   con);
                cmd.commandtype   =   commandtype.storedprocedure;
                cmd.parameters.add( "@customername ",sqldbtype.varchar,100).value= "wangqian ";
                cmd.parameters.add( "@return ",sqldbtype.int);
                cmd.parameters[ "@return "].direction   =   parameterdirection.returnvalue;
                con.open();
                cmd.EXECutenonquery();
                con.close();
                //方法二
                sqlconnection   con   =   new   sqlconnection( "server=.;database=master;uid=sa;pwd=; ");
                sqlcommand   cmd   =   new   sqlcommand( "insertcustomer2 ",   con);//insertcustomer2
                cmd.commandtype   =   commandtype.storedprocedure;
                cmd.parameters.add( "@customername ",   sqldbtype.varchar,   100).value   =   "wangqian ";
                cmd.parameters.add( "@return ",   sqldbtype.int);
                cmd.parameters[ "@return "].direction   =   parameterdirection.output;//output
                con.open();
                cmd.EXECutenonquery();
                con.close();
发表于:2007-03-15 10:00:1718楼 得分:0
其实我就是这么写的~
alter   procedure   [dbo].[storeexchangesdetailedit]
as
begin

declare   @temp   int   --相当于临时变量
set   @temp   =   1
return   @temp

end
我刚要整理发上来~同事就给我点发送了~郁闷~
但是我在程序里这样写
system.data.sqlclient.sqlparameter   p   =   new   system.data.sqlclient.sqlparameter( "@return_value ",   system.data.sqldbtype.int,   4);
p.direction   =   system.data.parameterdirection.returnvalue;
response.write((p.value).tostring())
但输出来是‘0',真是晕了~帮忙说一下应该代码怎么写~晚上不管问题解决没解决完我都给你结贴了~谢谢~主要是突然一个急得项目,这个得放放了~有问题再找你~谢谢!
发表于:2007-03-15 10:08:4719楼 得分:0
用@aa做参数
之后用parameter.add方法替代~
发表于:2007-03-15 10:57:3020楼 得分:0
借宝地问一个:
如果proc是
---------
create   proc   proc_name   as
select   'xx '
select   'yy '
select   'zz '
select   *   from   table   /*有两条记录以上*/
--------
这种情况如何取到   这几个值呢?

发表于:2007-03-15 11:07:0921楼 得分:0
mark!
发表于:2007-03-15 11:44:0822楼 得分:0
北京招聘
asp.net开发工程师
1、计算机专业本科以上学历,有能力者不限制;
2、精通asp.net、c#、mssqlserver等技术及相关开发工具;
3、熟练掌握uml建模,至少熟悉一种建模软件;  
4、熟悉数据库操作,有面向对象基础。熟悉三层开发构架;
5、应聘者请附上曾开发的项目实例或说明;
6、有较强的合作、沟通能力,具有团队精神与团队合作经验

待遇优厚,根据能力定薪金,具体待遇面议,保证不低于同行业水平.


email:hr@sinohousing.com


工作地点:
北京望京科技园利泽中园或北京电子城科技园区   [靠近望京和酒仙桥地区]


公司简介:
北京澳荷瑞科技有限公司位于北京望京科技创业园内。作为一家年轻的留学生人员企业,澳荷瑞公司充满着年轻的活力和国际化的背景。澳荷瑞公司将以科技信息交流和服务,以及科技软件和网络研发为主要业务,致力于发展以网络为平台的房屋信息服务(http://www.sinohousing.com)   和wto规则方面的相关软件开发。公司采用西方以人为本的管理模式,将十分重视员工的发展。  
公司由留欧归国人员创办,所提供的工作十分富有挑战性,工作前景也十分看好。公司非常欢迎愿意接受挑战的,能够吃苦耐劳的年轻人一起工作。本公司正处于创业阶段,公司规模不大,但公司有自己的独特发展思路和模式。所以对于马上想去大型公司工作的人才止步。公司很年轻,需要靠大家一起努力。
  有意者请将个人简历发至:hr@sinohousing.com.   我公司将以最快的速度回复符合条件的潜在人选。
发表于:2007-03-15 12:12:5723楼 得分:0
copy   hbxtlhx(平民百姓)  
------------------------------------------------------------
y7967()7457614y()   (   )   信誉:98         blog  
讲的很好很全了:)
发表于:2007-03-15 12:18:1824楼 得分:0
up
发表于:2007-03-15 15:21:0325楼 得分:0
请教各位高手,这个问题能解决吗?http://community.csdn.net/expert/topic/5397/5397555.xml?temp=.3033563
发表于:2007-03-16 10:06:4026楼 得分:0
忘结贴了~现在结~


快速检索

最新资讯
热门点击