①为什么要使用存储过程?
因为它比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

存储过程从入门到熟练(多个存储过程完整实例及调用方法)相关推荐

  1. 存储过程从入门到熟练(多个存储过程完整实例及调用方法)_AX

    ①为什么要使用存储过程? 因为它比SQL语句执行快. ②存储过程是什么? 把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点) ③来一个最简单的存储过程 CREATE P ...

  2. Oracle存储过程入门教程(通俗理解存储过程)

    Oracle存储过程入门通俗介绍 一.存储过程通俗理解 二.创建存储过程基本语法(汇总) 三.执行存储过程的方式(5种) 四.网上现有的创建存储过程的两种方式解释(看注释) 五.一些存储过程示例(仅供 ...

  3. Oracle存储过程快速入门

    1.什么是oracle存储过程 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程 ...

  4. 实验6 存储过程mysql_MySQL数据库实验:任务六 数据库存储过程设计

    任务六 数据库存储过程设计 文章目录 任务六 数据库存储过程设计 [实训目的与要求] [实训原理] [实训步骤] 一.定义.调用存储过程 1.创建不带参数的存储过程 2.创建带输入参数的存储过程 3. ...

  5. linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现

    使用过的命令: 进入db2cmd db2 connect todb_aliasuserusernameusingpassword db2 -tvfc:\abc.sql-labc.log 参考如下: 可 ...

  6. linux内核二当家,Linux PWN从入门到熟练(二)

    前言 上回说到,如何利用程序中system函数以及bin/sh字符串来进行pwn.这里我们会介绍,如何在栈可执行而system函数以及参数没有的情况下,如何自己布置payload进行pwn.此外,还提 ...

  7. 【github干货】主流深度学习开源框架从入门到熟练

    文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...

  8. matlab z变换离散化_MATLAB作图从入门到熟练

    有同学说,靠网络上的文章,很难学到系统的知识,还得自己看书,这话不假.主要是因为网上文章篇幅过短,难免无法概括全面,加之同学们更关心一些高效的学习方法,更倾向于接受高密集信息的学习方式,节省时间和精力 ...

  9. mysql数据库存储过程及调用方法

    mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出.6.0不仅支持大型数据库如oracle等的绝大部分功 能,如存储过程.视图.触发 ...

  10. 争议?MySQL存储过程与函数,封装,体,完整详细可收藏

    文章目录 1. 存储过程概述 2. 创建存储过程 3. 调用存储过程 4. 存储函数的使用 5. 存储过程和函数的查看.修改.删除 6. 关于存储过程使用的争议 MySQL从5.0版本开始支持存储过程 ...

最新文章

  1. 如何快速实现HTML编辑器.NET组件
  2. 中国自动化学会平行智能专业委员会成立
  3. 奥的斯GECS系统服务器手册,奥的斯电梯GECS 扶梯控制柜介绍.pdf
  4. sql server charindex函数和patindex函数详解(转)
  5. Django复习:模型与管理网站
  6. Linux保护文件实现,Linux完整性保护机制模块实现分析(1)
  7. 第8-9讲 视觉里程计2
  8. 行内元素多出的空白文本节点的解决方法
  9. Spring学习总结(2)- AOP
  10. [渝粤教育] 西南科技大学 文学概论 在线考试复习资料
  11. 发光二极管pcb封装图画法_【AD封装】贴片及插件二极管整流桥(带3D)
  12. 如何免费将一个PDF拆分成多个文件?
  13. git Untracked Files Prevent Rebase
  14. java 四分位算法_Java 四分位算法
  15. python自然语言_Python自然语言处理 - 随笔分类 - 牛皮糖NewPtone - 博客园
  16. unix/Linux常用命令英文全称与中文解释 man ,su,ps,ls 等等
  17. 你为什么要去做微商?
  18. 手把手教你给 SSH 启用二次身份验证
  19. 兔老大的系统设计(一)健康度系统
  20. 环回接口(loopback interface)

热门文章

  1. Python爬取豆瓣网中即将上映的电影数据清单
  2. [Algorithm NLP] 文本深度表示模型——word2vecdoc2vec词向量模型
  3. python获取本机IP、探测指定URL的IP等信息、生成格式化时间
  4. 2021-06-29操作DOM元素
  5. python转视频格式高清_树莓派环境下使用python将h264格式的视频转为mp4
  6. mysql存储数据到cephfs_1.4 cephfs挂载
  7. import sys是什么意思_学了半天,import 到底在干啥?
  8. IDEA中创建maven web的详细部署
  9. python3语法学习第四天--序列
  10. java 线程池 hash_java线程池实例 - Hashsound的个人空间 - OSCHINA - 中文开源技术交流社区...