存储过程从入门到熟练(多个存储过程完整实例及调用方法)
因为它比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
转载于:https://www.cnblogs.com/54tiger/archive/2007/01/10/616678.html
存储过程从入门到熟练(多个存储过程完整实例及调用方法)相关推荐
- 存储过程从入门到熟练(多个存储过程完整实例及调用方法)_AX
①为什么要使用存储过程? 因为它比SQL语句执行快. ②存储过程是什么? 把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点) ③来一个最简单的存储过程 CREATE P ...
- Oracle存储过程入门教程(通俗理解存储过程)
Oracle存储过程入门通俗介绍 一.存储过程通俗理解 二.创建存储过程基本语法(汇总) 三.执行存储过程的方式(5种) 四.网上现有的创建存储过程的两种方式解释(看注释) 五.一些存储过程示例(仅供 ...
- Oracle存储过程快速入门
1.什么是oracle存储过程 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程 ...
- 实验6 存储过程mysql_MySQL数据库实验:任务六 数据库存储过程设计
任务六 数据库存储过程设计 文章目录 任务六 数据库存储过程设计 [实训目的与要求] [实训原理] [实训步骤] 一.定义.调用存储过程 1.创建不带参数的存储过程 2.创建带输入参数的存储过程 3. ...
- linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现
使用过的命令: 进入db2cmd db2 connect todb_aliasuserusernameusingpassword db2 -tvfc:\abc.sql-labc.log 参考如下: 可 ...
- linux内核二当家,Linux PWN从入门到熟练(二)
前言 上回说到,如何利用程序中system函数以及bin/sh字符串来进行pwn.这里我们会介绍,如何在栈可执行而system函数以及参数没有的情况下,如何自己布置payload进行pwn.此外,还提 ...
- 【github干货】主流深度学习开源框架从入门到熟练
文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...
- matlab z变换离散化_MATLAB作图从入门到熟练
有同学说,靠网络上的文章,很难学到系统的知识,还得自己看书,这话不假.主要是因为网上文章篇幅过短,难免无法概括全面,加之同学们更关心一些高效的学习方法,更倾向于接受高密集信息的学习方式,节省时间和精力 ...
- mysql数据库存储过程及调用方法
mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出.6.0不仅支持大型数据库如oracle等的绝大部分功 能,如存储过程.视图.触发 ...
- 争议?MySQL存储过程与函数,封装,体,完整详细可收藏
文章目录 1. 存储过程概述 2. 创建存储过程 3. 调用存储过程 4. 存储函数的使用 5. 存储过程和函数的查看.修改.删除 6. 关于存储过程使用的争议 MySQL从5.0版本开始支持存储过程 ...
最新文章
- 如何快速实现HTML编辑器.NET组件
- 中国自动化学会平行智能专业委员会成立
- 奥的斯GECS系统服务器手册,奥的斯电梯GECS 扶梯控制柜介绍.pdf
- sql server charindex函数和patindex函数详解(转)
- Django复习:模型与管理网站
- Linux保护文件实现,Linux完整性保护机制模块实现分析(1)
- 第8-9讲 视觉里程计2
- 行内元素多出的空白文本节点的解决方法
- Spring学习总结(2)- AOP
- [渝粤教育] 西南科技大学 文学概论 在线考试复习资料
- 发光二极管pcb封装图画法_【AD封装】贴片及插件二极管整流桥(带3D)
- 如何免费将一个PDF拆分成多个文件?
- git Untracked Files Prevent Rebase
- java 四分位算法_Java 四分位算法
- python自然语言_Python自然语言处理 - 随笔分类 - 牛皮糖NewPtone - 博客园
- unix/Linux常用命令英文全称与中文解释 man ,su,ps,ls 等等
- 你为什么要去做微商?
- 手把手教你给 SSH 启用二次身份验证
- 兔老大的系统设计(一)健康度系统
- 环回接口(loopback interface)
热门文章
- Python爬取豆瓣网中即将上映的电影数据清单
- [Algorithm NLP] 文本深度表示模型——word2vecdoc2vec词向量模型
- python获取本机IP、探测指定URL的IP等信息、生成格式化时间
- 2021-06-29操作DOM元素
- python转视频格式高清_树莓派环境下使用python将h264格式的视频转为mp4
- mysql存储数据到cephfs_1.4 cephfs挂载
- import sys是什么意思_学了半天,import 到底在干啥?
- IDEA中创建maven web的详细部署
- python3语法学习第四天--序列
- java 线程池 hash_java线程池实例 - Hashsound的个人空间 - OSCHINA - 中文开源技术交流社区...