All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.Net中FileUpLoad控件内容清空
ASP.NET如何存取SQL,Server数据库图_[Asp.Net教程]
C#,4.0语言将出现重大改变,带来一段Code,Preview_[Asp.Net教程]
ASP.NET1.1和2.0下进行https请求的不同实现_.net资料_编程技术
ASP.NET,MVC+LINQ开发一个图书销售站点(4)-创建一个ASP.NET,MVC应用的原型_[Asp.Net教程]
针对Oracle10g,EM乱码之快速解决方法_php资料_编程技术
Sql Server 2005 数据库维护计划_[SQL Server教程]
重新计算自动编号_[SQL,Server教程]
网页HTML教程:建立有亲和力的超级连接_[Html教程]
ADO.NET查询数据库中数据
Reading number is top 10 pictures
BingBingFan apple dew point photo gallery2
擦地板的大叔太好了
The girl of like self-time
Sell the barbecue as says father du breul4
徐若瑄展示美丽胸围3
Sora aoi in China1
Female model behind the bitterness, often being overcharged3
美女和狗狗2
Beauty Sun Feifei
So beauty, will let you spray blood6
Download software ranking
尖东毒玫瑰A
Tram sex maniac 2 (H) rar bag9
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
都市狐狸姑娘传
WebService在.NET中的实战应用教学视频 → 第5集
asp.net技术内幕
C#与.NET技术平台实战演练
Tram sex maniac 2 (H) rar bag16
apache-tomcat-6.0.33
Kung.Fu.Panda.2
delv published in(发表于) 2013/12/30 4:43:25 Edit(编辑)
存储过程从入门到熟练(多个存储过程完整实例及调用方法)_mssql学习_编程技术

存储过程从入门到熟练(多个存储过程完整实例及调用方法)_mssql学习_编程技术

存储过程从入门到熟练(多个存储过程完整实例及调用方法)_mssql学习_编程技术-你的首页-uuhomepage.com

①为什么要使用存储过程?
因为它比SQL语句执行快.


②存储过程是什么?
把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点)


③来一个最简单的存储过程
CREATE PROCEDURE dbo.testProcedure_AX
AS
select userID from USERS order by userid desc


注:dbo.testProcedure_AX是你创建的存储过程名,可以改为:AXzhz等,别跟关键字冲突就行了.AS下面就是一条SQL语句,不会写SQL语句的请回避.


④我怎么在ASP.NET中调用这个存储过程?
下面黄底的这两行就够使了.
public static string GetCustomerCName(ref ArrayList arrayCName,ref ArrayList arrayID)
{
SqlConnection con=ADConnection.createConnection();
SqlCommand cmd=new SqlCommand("testProcedure_AX",con);
cmd.CommandType=CommandType.StoredProcedure;
con.Open();
try
{
SqlDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
if(dr[0].ToString()=="")
{
arrayCName.Add(dr[1].ToString());
}
}
con.Close();
return "OK!";
}
catch(Exception ex)
{
con.Close();
return ex.ToString();
}
}
注:其实就是把以前
SqlCommand cmd=new SqlCommand("select userID from USERS order by userid desc",con);
中的SQL语句替换为存储过程名,再把cmd的类型标注为CommandType.StoredProcedure(存储过程)


⑤写个带参数的存储过程吧,上面这个简单得有点惨不忍睹,不过还是蛮实用的.
参数带就带两,一个的没面子,太小家子气了.


CREATE PROCEDURE dbo.AXzhz
/*
这里写注释
*/
@startDate varchar(16),
@endDate varchar(16)
AS
select id from table_AX where commentDateTime>@startDate and commentDateTime<@endDate order by contentownerid DESC


注:@startDate varchar(16)是声明@startDate 这个变量,多个变量名间用【,】隔开.后面的SQL就可以使用这个变量了.


⑥我怎么在ASP.NET中调用这个带参数的存储过程?


public static string GetCustomerCNameCount(string startDate,string endDate,ref DataSet ds)
{
SqlConnection con=ADConnection.createConnection();
//-----------------------注意这一段--------------------------------------------------------------------------------------------------------
SqlDataAdapter da=new SqlDataAdapter("AXzhz",con);


para0=new SqlParameter("@startDate",startDate);
para1=new SqlParameter("@endDate",endDate);
da.SelectCommand.Parameters.Add(para0);
da.SelectCommand.Parameters.Add(para1);
da.SelectCommand.CommandType=CommandType.StoredProcedure;
//-------------------------------------------------------------------------------------------------------------------------------



try
{
con.Open();
da.Fill(ds);
con.Close();
return "OK";
}
catch(Exception ex)
{
return ex.ToString();
}
}


注:把命令的参数添加进去,就OK了
鸟的,改字体颜色的东西太垃圾了,改不好,大家凑活着看.


⑦我还想看看SQL命令执行成功了没有.
注意看下面三行红色的语句


CREATE PROCEDURE dbo.AXzhz
/*
@parameter1 用户名
@parameter2 新密码
*/
@password nvarchar(20),
@userName nvarchar(20)
AS
declare @err0 int
update WL_user set password=@password where UserName=@userName
set @err0=@@error
select @err0 as err0


注:先声明一个整型变量@err0,再给其赋值为@@error(这个是系统自动给出的语句是否执行成功,0为成功,其它为失败),最后通过select把它选择出来,某位高人说可以通过Return返回,超出本人的认知范围,俺暂时不会,以后再补充吧


⑧那怎么从后台获得这个执行成功与否的值呢?
下面这段代码可以告诉你答案:
public static string GetCustomerCName()
{
SqlConnection con=ADConnection.createConnection();

SqlCommand cmd=new SqlCommand("AXzhz",con);
cmd.CommandType=CommandType.StoredProcedure;
para0=new SqlParameter("@startDate","2006-9-10");
para1=new SqlParameter("@endDate","2006-9-20");
da.SelectCommand.Parameters.Add(para0);
da.SelectCommand.Parameters.Add(para1);
con.Open();
try
{
Int32 re=(int32)cmd.ExecuteScalar();
con.Close();
if (re==0)
return "OK!";
else
return "false";
}
catch(Exception ex)
{
con.Close();
return ex.ToString();
}
}
注:就是通过SqlCommand的ExecuteScalar()方法取回这个值,这句话是从MSDN上找的,俺认为改成:
int re=(int)cmd.ExecuteScalar(); 99%正确,现在没时间验证,期待您的测试!!!


⑨我要根据传入的参数判断执行哪条SQL语句!!~
下面这个存储过程可以满足我们的要求,竟然是Pascal/VB的写法,Begin----End ,不是{},,,对使用C#的我来说,这个语法有点恶心.........


ALTER PROCEDURE dbo.selectCustomerCNameCount
@customerID int
AS
if @customerID=-1
begin
select contentownerid ,userCName,count(*) as countAll from view_usercomment group by contentownerid,userCName order by contentownerid DESC
end
else
begin
select contentownerid ,userCName,count(*) as countAll from view_usercomment where contentownerid=@customerID group by contentownerid,userCName order by contentownerid DESC
end


好了,俺的水平只止于此,也够菜鸟们喝一壶的了,还有更多东西等着我们去发现,无尽的征途!!!!!!!!!!!


http://www.cnblogs.com/AXzhz/archive/2006/09/20/510007.html





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.