精华内容
下载资源
问答
  • 主要介绍了C# Ado.net实现读取SQLServer数据库存储过程列表及参数信息,结合实例形式总结分析了C#针对SQLServer数据库存储过程及参数信息的各种常见操作技巧,需要的朋友可以参考下
  • 主要针对SQL数据库存储过程示例进行解析,感兴趣的小伙伴们可以参考一下
  • 数据库存储过程

    2018-06-13 10:58:17
    sqlserver 数据库数据入库的存储过程编写、调用。如何传参数
  • 获取SQLServer数据库中所有存储过程的源代码,可以对代码进行搜索,也可以把源代码保存,非常实用。 可根据需要修改。
  • ——》“下一步”——》选择你要存储过程所在数据库——》 “下一步”——》勾选“存储过程”,并下一步——》 勾选你要生成的存储过程名称,并下一步——》 选择将脚本保存到文件,并选择保存路径——》完成 还有一...
  • C#获取SQL server数据库存储过程脚本,可重复执行.用于给数据库升级的打升级包的时候,十分方便
  • 数据库存储过程详解

    千次阅读 2020-02-12 15:31:41
    目录性能测试不正经解决方案正经解决方案什么是存储过程存储过程分类Mysql常用函数实操存储过程逻辑处理实战 性能测试 测试专家必经之路:性能测试 高级性能测试实战班:http://www.mtongxue.com/news1/10 不正经...

    性能测试

    测试专家必经之路:性能测试
    高级性能测试实战班:http://www.mtongxue.com/news1/10

    不正经解决方案

    1. 手动页面注册(效率低)
    2. 让研发帮忙写个脚本造数据(现在忙,等会再说)
    3. 跟领导说我不会(绩效奖金没了)

    正经解决方案

    1. 抓包找到注册接口,用自动化工具循环调注册接口(Jmeter、postman等)
    2. 自己写代码完成(Java、Python)
    3. 写一个存储过程(快速、方便)

    什么是存储过程

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

    存储过程分类

    1. 有返回值
    2. 无返回值

    Mysql常用函数

    CONCAT(str1,str2,…):拼接多个字符串
    RAND():获取一个0-1之间的小数
    FLOOR(X):取整
    NOW():当前时间,格式yyyy-MM-dd HH:mm:SS

    实操

    查询时CONCAT的用法:
    SELECT CONCAT('hello','tx',1)
    结果:
    hellotx1
    在这里插入图片描述
    查询时RAND的用法:
    SELECT RAND()
    结果0-1之间的随机小数:
    0.166983275829
    在这里插入图片描述
    查询时RAND的用法:
    SELECT RAND()*100
    结果0-100之间的随机数:
    49.17835951706
    在这里插入图片描述
    查询时FLOOR的用法,取整,不做四舍五入:
    SELECT FLOOR(3.8)
    结果:
    3
    在这里插入图片描述
    查询时RAND和FLOOR的混合用法:
    SELECT FLOOR(RAND()*100)
    结果0-100之间的随机整数:
    95
    在这里插入图片描述
    查询时RAND和FLOOR的混合用法:
    SELECT FLOOR(RAND()*90+10)
    结果10-100之间的随机整数:
    72
    在这里插入图片描述
    查询时NOW的用法:
    SELECT NOW()
    结果:
    2020-02-12 15:16:17
    在这里插入图片描述
    查询时INSERT的用法:
    SELECT INTO user (user_name,age,gender) values ('xxx', 12, 0)

    存储过程逻辑处理

    函数->新建函数->选择过程
    在这个窗口,可以编写程序

    • while循环
      while 条件 do
      _语句;
      end while;

    • if判断
      if 条件 then
      语句;
      else
      语句;
      end if;

    实战

    名字:testname_和数字的组合,名字不重复
    年龄:为1-99的随机整数
    性别:男女比例1:1,偶数为女,奇数为男

    BEGIN
    	DECLARE i INT DEFAULT 0;
    	DECLARE p_name VARCHAR(50);
    	DECLARE p_age INT;
    	DECLARE p_gender INT DEFAULT 0;
    
    	WHILE i<10000 DO
    		
    		IF i%2=0 THEN
    			SET p_gender = 0;
    		ELSE
    			SET p_gender = 1;
    		END IF;
    
    		SET p_name=CONCAT('testname_',i);
    		SET p_age=FLOOR(RAND()*99+1);
    		INSERT INTO user (user_name,age,gender) values (p_name, p_age, p_gender);
    		SET i=i+1;
    	END WHILE;
    END
    
    展开全文
  • MySQL数据库存储过程讲解与实例

    万次阅读 多人点赞 2018-06-03 00:48:17
    SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。...

    存储过程简介

        SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

        存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

        存储过程的优点:

        (1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

        (2).标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

        (3).较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

        (4).减少网络流量:针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织进存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大减少网络流量并降低了网络负载。

        (5).作为一种安全机制来充分利用:通过对执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

    MySQL的存储过程

        存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0开始支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

    MySQL存储过程的创建

        语法

    CREATE PROCEDURE  过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

    DELIMITER //
      CREATE PROCEDURE myproc(OUT s int)
        BEGIN
          SELECT COUNT(*) INTO s FROM students;
        END
        //
    DELIMITER ;
        分隔符

        MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

        参数

        存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:

    IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值OUT:该值可在存储过程内部被改变,并可返回INOUT:调用时指定,并且可被改变和返回

        过程体

        过程体的开始与结束使用BEGIN与END进行标识。

    MySQL实例与讲解

    1. 创建一存储过程,求l+2+3+…+n,并打印结果

    先使用MySQL语句创建存储过程,再使用call语句调用这一存储过程查看结果,可以看到由于未输入n的值,sum结果为0。

    2.调用上面addresult存储过程,打印l十2+3+…+10的结果

    在第一题的addresult过程基础上,加上一条“set n=10”语句,设定n的值,调用该过程后打印结果,可以看到结果为sum=1+2+3+...+10=55。

     

    3. 修改上述存储过程addresult1,使得n为输入参数,其具体值由用户调用此存储过程时指定。

    在这里需要注意的是,MySQL存储过程只能改名字和定义,不能改里面的内容。要删了重新建。所以这里选择重新建立一个addresult1过程,调用后输入n,查看打印结果。

     

    4.上面修改后的addresult1存储过程,打印l+2+3+…+100的结果

    调用上述过程,输入参数n为100,可以看到打印结果中sum=5050,结果正确。


    5.
    修改上述存储过程addresult2n参数设定默认值为10,并改设sum为输出参数,让主程序能够接收计算结果。

    3中存储过程中的“in n int”修改为“out sum int”,并在存储过程中设定n默认值为10。

     

    6.调用上面修改后的addresult2存储过程,设置变量接收计算l+2+3+…+10的结果

    调用addresult2过程,可以看到输出结果sum=55。

     

    7.创建一存储过程Proc_Student,用于显示学号为“0102”的学生基本信息包括学号、姓名、性别和系

    创建存储过程,将查询语句写在存储过程中,相当于将一个查询语句封装在存储过程中,通过调用这个存储过程,便可执行该查询操作。

     

    8.创建一存储过程Stu_grade通过读取某门课的编号求出不及格的学生的学号

    同上一题,将查询过程封装在存储过程中,并且使用“int ID int”来实现课程编号的自定义输入,再根据输入的课程编号进行查询。

     

    9.调用上面的存储过程Stu_grade,求出课程编号为“0101”的不及格的学生

    调用存储过程Stu_grade,输入课程编号为“0101”,查看打印结果。

     

    10.创建一存储过程avgGrade,通过读取学生的学号以参数形式返回该学生的平均分

    在创建存储过程时,设定学号为输入,平均成绩为输出,且因为平均成绩可能出现小数,所以设定其数据类型为float。通过select语句将平均分以参数形式返回。

     

    11.调用上面的存储过程avgGrade,求出学号为“990102014”的平均分

    输入学号与输出参数,可以看到该学生的平均成绩被打印出来。

     

    12.删除上述存储过程avgGrade

    对于存储过程的删除,使用drop语句即可。

     

    13.创建存储过程search,该存储过程有三个参数,分别为t、p1,p2,根据这些参数,找出书名与t有关,价格在p1与p2(p2>=p1)之间的书的编号,书名,价格,出舨日期。如果用户调用时没有指定t参数的值.则表示可为任意值,如用户没有指定p2,则书本价格没有上限。用到的关系为:titles (title_id,title,price,pubdate)。

     



    14.调用上面的存储过程search,求出书名与computer有关而且价格小于$20大于$10的书。

    调用存储过程search,将参数computer,10,20传入,查看打印结果。



     


    总结

        本次主要是掌握了对于存储过程的使用,总的来说,存储过程实际上类似于C++中的函数,而在C++中我们是需要在创建这一过程的文件中去调用这一函数,但是对于存储过程来说,相当于是将这一操作过程存储在数据库中,可以使用call与对其进行调用,并输入或者输出一些参数和结果。

        印象最深的是类似“in n int”和“out sum int”这样的对于输入输出的定义,通过查看相关博客,可以总结如下对于输入输出定义的使用规律:

        MySQL存储过程的参数用在存储过程的定义,共有三种参数类型

        IN,OUT,INOUT
        格式为:Create procedure|function([[IN |OUT |INOUT ] 参数名 数据类形...])

        IN 输入参数
            表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

        OUT 输出参数
            该值可在存储过程内部被改变,并可返回

        INOUT 输入输出参数
            调用时指定,并且可被改变和返回

        IN 和 OUT在实验中已有体会,主要是对INOUT的理解,这里引用一个例子:

     

    参数inout的使用实例(既能输入一个值又能传出来一个值)
        语句功能:传一个年龄,自动让年龄增长10岁
        create procedure p3(inout age int)
        begin
        set age:=age+10;
        end
        其中:调用的时候,inout型的参数值既是输入类型又是输出类型,给它一个值,值不是变量,因此我们需要先设置一个变量并初始化这个值,调用的时候直接传这个变量即可。
        set @currentAge=8$
        call p3(@currentAge)$
        select @currentAge$
        创建并执行完存储过程,运行结果如下:
            

     

    另外,更多关于数据库、网络技术、信息安全等方面的文章,感兴趣的(尤其是想打CTF的)欢迎来我的博客上看看

    展开全文
  • 本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法。分享给大家供大家参考。具体如下: 首先我们在数据库(SQL Server)中声明定义存储过程 代码如下:use sales –指定数据库    if(exists(select * from ...
  • MySQL数据库存储过程

    万次阅读 多人点赞 2017-03-22 19:34:29
    本文以MySQL数据库为例对数据库存储过程进行介绍,包括创建、查看、执行和删除存储过程,并对比了WHILE和repeat循环的差别。 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集...

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
    ——百度百科

    存储过程

    如图所示,在普通模式下获取数据,用户需要输入SQL命令与数据库进行交互,而存储过程是编写好的SQL命令,存储在数据库中,用户操作的时候只需要调用存储过程,而不用重新输入冗余繁杂的SQL命令。因此

    • 存储过程有什么优点?
      1.存储过程可以重复使用,大大减小开发人员的负担;
      2.对于网络上的服务器,可以大大减小网络流量,因为只需要传递存储过程的名称即可;
      3,可以防止对表的直接访问,只需要赋予用户存储过程的访问权限。

    0 存储过程相关命令汇总

    操作SQL命令
    创建存储过程CREATE PROCEDURE 存储过程名(参数种类1 参数1 数据类型1,[...] BEGIN 具体的procedure(处理) END
    查看数据库中的存储过程SHOW PROCEDURE STATUS\G
    查看具体的存储过程SHOW CREATE PROCEDURE 存储过程名\G
    调用(执行)存储过程CALL 存储过程名(参数1,...);
    删除存储过程DROP PROCEDURE 存储过程名
    变量声明DECLARE 变量名 数据类型;
    变量赋值SET 变量名= ;

    1 存储过程

    1.1 创建存储过程 CREATE PROCEDURE

    创建存储过程的命令是:

    
    >CREATE PROCEDURE 存储过程名(参数种类1 参数1 数据类型1,[...])
     BEGIN
     具体的procedure(处理)
     END
    • 1)存储过程中具体的处理类容放在 BEGINEND 之间;
    • 2)存储过程需要制定参数,包括种类( IN,OUT,INOUT ,分别代表输入参数,输出参数和即是输入也是输出的参数),参数名和数据类型。【和函数不同,函数指定输入参数即可】

    eg:创建一个对表customer的姓名(nam)进行模糊检索,命名为sp_search_customer。

    创建存储过程

    对于上图创建PROCEDURE的几点说明:
    >DELIMITER //表示给变分隔符,默认分隔符是;,否则存储过程中含有;,MySQL监视器无法分辨。(最后将分隔符改回来)
    ②存储过程( BEGINEND 之间)的具体处理内容,主要包括条件、case,循环。

    分类SQL命令
    简单条件IF cond1 THEN
        exp1
    ELSEIF cond2 THEN
        exp2
    ELSE
        expelse
    END IF
    caseCASE 表达式
        WHEN 值1 THEN …
        WHEN …THEN…
        ELSE …
    END CASE
    循环(后置判断)REPEAT

    UNTIL …END REPEAT
    循环(前置判断)WHILE … DO

    END WHILE

    **1.2 查看存储过程** 查看数据库中是否存在存储过程:

    >SHOW PROCEDURE STATUS\G

    查看存储过程的具体信息:

    >SHOW CREATE PROCEDURE 存储过程名\G

    eg:查看存储过程sp_search_customer

    查看存储过程

    1.3 执行存储过程 CALL
    调用存储过程使用CALL 存储过程名命令,具体如下:

    CALL 存储过程名(参数,...)

    eg:通过创建好的存储过程sp_search_cusotmer来执行存储过程:
    检索‘王’姓顾客:

    >CALL sp_search_customer('王%');

    检索所有顾客:

    >CALL sp_search_customer('');

    调用存储过程

    1.4 删除存储过程 DROP PROCEDURE
    删除存储过程使用命令:

    DROP PROCEDURE 存储过程名;

    2 存储过程优化

    (1)使用if条件语句创建存储过程

    if条件_存储过程

    可以看到,上述条件语句部分的结构大致都为:

    IF... THEN
    SELECT...;
    ELSEIF ...THEN
    SELECT...;
    ELSEIF...THEN
    SELECT...;
    ELSE
    SELECT...;

    其中的语句具有较高的重复性冗余性,因此比较繁琐,如果我们用CASE替代呢?
    (2)CASE命令的多重分支

    使用CASE来创建多重分支:

    CASE_存储过程

    p_dapart放到CASE之后,一个p_dapart取代了多个p_dapart,因此使用CASE代码在判断语句处显得简洁一些,如果通过定义变量的形式呢?

    (3)定义本地变量

    存储过程中定义的变量,被称为本地变量,对程序设计语言有所了解的知道这是一个局部变量。数据库中,
    声明局部变量的命令:

    >DECLARE 变量名 数据类型 [初始值...]

    给变量赋值的命令:

    >SET 变量名=

    ,在创建procedure过程中顶一个本地变量tem:

    本地变量_存储过程

    可以看到,这种方式大大地简化了代码的冗余性和重复性。

    3 再说存储过程的输出参数

    在创建存储过程的时候,如果制定了 OUTINOUT ,在调用存储过程时请在输出参数前面加上 @ ,这样结果将保存到“@变量名“中。

    eg:创建一个计算阶乘的存储过程:

    存储过程输出参数

    最终的结果将保存到“@res“之中,如上图所示。

    • 请注意,用WHILE循环创建的计算阶乘的存储过程, !5=120,!0=1 ,结果是正确的。先记住这句话,接下来看下用REPEAT创建同样的阶乘计算的存储过程。

      4 再说WHILE 和 REPEAT循环

      我们使用repeat创建一个计算阶乘的存储过程:

      REPEAT_存储过程

      接下来看下同样计算 !5!0 结果如何?

      repeat_存储过程

      可以看到!5=120的结果正确,但是!0得到的结果为0,不为1。这是什么原因呢?
      问题出在WHILE是前置判断,是先验的,先验证WHILE后面的条件是否成立,为TRUE则继续执行,若FALSE则结束循环;
      而REPEAT是后置判断,是后验的,不管三七二十一先执行语句,然后验证UNTIL后面的条件语句是否成立,不成立则结束。因此REPEAT循环执行了一次 presult=presultpnumpresult=10
      因此:

      • WHILE循环是前置判断,先验的循环
      • REPEAT循环是后置判断,后验的循环
    展开全文
  • Mysql数据库存储过程基本语法讲解

    万次阅读 2018-02-06 18:01:13
    Mysql数据库存储过程基本语法讲解 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。存储过程如同一门程序设计语言,同样包含了...
    Mysql数据库存储过程基本语法讲解
    一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。
    一.创建存储过程
    1.基本语法:
    ?
    1
    2
    3
    4
    create procedure sp_name()
    begin
    .........
    end
    2.参数传递
    二.调用存储过程
    1.基本语法:
    ?
    1
    call sp_name()
    注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
    三.删除存储过程
    1.基本语法:
    drop procedure [存储过程名称];   //后面没有括号
    2.注意事项
    (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
    四.区块,条件,循环
    1.区块定义,常用
    ?
    1
    2
    3
    begin
    ......
    end;
    也可以给区块起别名,如:
    ?
    1
    2
    3
    lable:begin
    ...........
    end lable;
    可以用leave lable;跳出区块,执行区块以后的代码
    2.条件语句
    if 条件 then
     statement
     else
     statement
     end if;
    3.循环语句
    (1).while循环
    [label:] WHILE expression DO

     statements

     END WHILE [label] ;
    (2).loop循环
    [label:] LOOP

     statements

     END LOOP [label];
    (3).repeat until循环
    [label:] REPEAT

     statements

     UNTIL expression

     END REPEAT [label] ;
    五.其他常用命令
    1.show procedure status
    显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
    2.show create procedure sp_name
    显示某一个存储过程的详细信息
    下面看一个例子
    一、MySQL 创建存储过程
    “pr_add” 是个简单的 MySQL 存储过程,这个MySQL 存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和
    delimiter //   -- 改变分割符
    drop procedure if exists pr_add//  -- 若之前创建有这个存储过程则删除
    计算两个数之和
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create procedure pr_add (a int,b int)
    begin
    declare c int;
    if a is null then
    set a = 0;
    end if;
    if b is null then
    set b = 0;
    end if;
    set c = a + b;
    select c as sum;
    end
    //
    二、调用 MySQL 存储过程
    call pr_add(10, 20);
    执行 MySQL 存储过程,存储过程参数为 MySQL 用户变量。
    set @a = 10;
    set @b = 20;
    call pr_add(@a, @b);
    三、MySQL 存储过程特点
    创建 MySQL 存储过程的简单语法为:
    create procedure 存储过程名字()
    (
    [in|out|inout] 参数 datatype
    )
    begin
    MySQL 语句;
    end;
    MySQL 存储过程参数如果不显式指定“in”、“out”、“inout”,则默认为“in”。习惯上,对于是“in” 的参数,我们都不会显式指定。
    1. MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”
    2. MySQL 存储过程参数,不能在参数名称前加“@”,如: “@a int”。下面的创建存储过程语法在 MySQL 中是错误的(在 SQL Server 中是正确的)。 MySQL 存储过程中的变量,不需要在变量名字前加“@”,虽然 MySQL 客户端用户变量要加个“@”。
    create procedure pr_add
    (
    @a int, -- 错误
    b int -- 正确
    )
    3. MySQL 存储过程的参数不能指定默认值。
    4. MySQL 存储过程不需要在 procedure body 前面加 “as”。而 SQL Server 存储过程必须加 “as” 关键字。
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create procedure pr_add
    (
    a int,
    b int
    )
    as -- 错误,MySQL 不需要 “as”
    begin
    mysql statement ...;
    end;
    5. 如果 MySQL 存储过程中包含多条 MySQL 语句,则需要 begin end 关键字。
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create procedure pr_add
    (
    a int,
    b int
    )
    begin
    mysql statement 1 ...;
    mysql statement 2 ...;
    end;
    6. MySQL 存储过程中的每条语句的末尾,都要加上分号 “;”
    ?
    1
    2
    3
    4
    5
    6
    7
    ...
    declare c int;
    if a is null then
    set a = 0;
    end if;
    ...
    end;
    7. MySQL 存储过程中的注释。
    declare c int; -- 这是单行 MySQL 注释 (注意 -- 后至少要有一个空格)
    if a is null then # 这也是个单行 MySQL 注释
    set a = 0;
    end if;
    ...
    end;
    8. 不能在 MySQL 存储过程中使用 “return” 关键字。
    set c = a + b;
    select c as sum;
    end;
    9. 调用 MySQL 存储过程时候,需要在过程名字后面加“()”,即使没有一个参数,也需要“()”
    call pr_no_param();
    10. 因为 MySQL 存储过程参数没有默认值,所以在调用 MySQL 存储过程时候,不能省略参数。可以用 null 来替代。
    我们再通过一个实例来加深一下以上知识点:
    1、下面为一个存储过程的定义过程:
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create procedure proc_name (in parameter integer)
    begin
    declare variable varchar(20);
    if parameter=1 then set variable='MySQL';
    else set variable='PHP';
    end
    if;
    insert into tb (name) values (variable);
    end;
    MySQL中存储过程的建立以关键字create procedure开始,后面紧跟存储过程的名称和参数。MySQL的存储过程名称不区分大小写,例如PROCE1()和proce1()代表同一个存储过程名。存储过程名不能与MySQL数据库中的内建函数重名。
    存储过程的参数一般由3部分组成。第一部分可以是in、out或inout。in表示向存储过程中传入参数;out表示向外传出参数;inout表示定义的参数可传入存储过程,并可以被存储过程修改后传出存储过程,存储过程默认为传入参数,所以参数in可以省略。第二部分为参数名。第三部分为参数的类型,该类型为MySQL数据库中所有可用的字段类型,如果有多个参数,参数之间可以用逗号进行分割。
    MySQL存储过程的语句块以begin开始,以end结束。语句体中可以包含变量的声明、控制语句、SQL查询语句等。由于存储过程内部语句要以分号结束,所以在定义存储过程前应将语句结束标志“;”更改为其他字符,并且该字符在存储过程中出现的几率也应该较低,可以用关键字delimiter更改。例如:
    mysql>delimiter //
    存储过程创建之后,可用如下语句进行删除,参数proc_name指存储过程名。
    drop procedure proc_name
    实现过程
    (1)MySQL存储过程是在“命令提示符”下创建的,所以首先应该打开“命令提示符”窗口。
    (2)进入“命令提示符”窗口后,首先应该登录MySQL数据库服务器,在“命令提示符”下输入如下命令:
    mysql –u用户名 –p用户密码
    (3)更改语句结束符号,本实例将语句结束符更改为“//”。代码如下:
    delimiter //
    (4)创建存储过程前应首先选择某个数据库。代码如下:
    use 数据库名
    (5)创建存储过程。
    (6)通过call语句调用存储过程。
    举一反三
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    use test;
    create table user(
    id mediumint(8) unsigned not null auto_increment,
    name char(15) not null default ”,
    pass char(32) not null default ”,
    note text not null,
    primary key (id)
    )engine=Innodb charset=utf8;
    示例一
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    delimiter //
    create procedure proc_name (in parameter integer)
    begin
    if parameter=0 then
    select * from user order by id asc;
    else
    select * from user order by id desc;
    end if;
    end;
    //
    delimiter ;
    show warnings;
    call proc_name(1);
    call proc_name(0);
    示例二
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    drop procedure proc_name;
    delimiter //
    create procedure proc_name (in parameter integer)
    begin
    declare variable varchar(20);
    if parameter=1 then
    set variable='Windows';
    else
    set variable='Linux';
    end if;
    select parameter;
    end;
    //
    delimiter ;
    show warnings;
    call proc_name(1);
    call proc_name(0);
    删除drop procedure proc_name;
    附注:
    1.show procedure status;
    显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
    2.show create procedure sp_name
    显示某一个存储过程的详细信息
    以上就是本篇MYSQL基本语法相关知识的全部内容,感觉不错就分享给你的朋友们吧。
    您可能感兴趣的文章:
    如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!! 点击进入社区
    展开全文
  • 数据库存储过程及其调用

    千次阅读 2017-12-18 17:37:05
    内容: - 存储过程格式 - 定时调用存储过程
  • 复制整个SqlServer数据库的问题的比较好的方法
  • 数据库 存储过程 触发器 基本简介
  • SQL Server数据库基础知识——数据库存储过程怎么写

    千次阅读 多人点赞 2020-05-22 04:45:56
    存储过程概述 什么是存储过程存储过程的种类 如何创建、修改、删除、调用存储过程存储过程的优缺点 存储过程和触发器的区别? 存储过程和函数的区别? 存储过程的使用 1. 什么是存储过程存储过程是一个预...
  • 数据库存储过程简单介绍

    千次阅读 2019-03-05 15:37:35
    存储过程就是一条或多条SQL语句的集合 当对数据库进行一系列的操作时 存储过程就可以将这些复杂的操作封装成一个代码块 以便重复使用 大大减少了数据库开发人员的工作量 创建存储过程 创建存储过程的基本语法 CREATE...
  • sql server数据库存储过程可分为两种: 一、系统存储过程 系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要...
  • Oracle数据库 存储过程入门

    千次阅读 2018-12-27 16:13:42
    存储过程是一组为了完成特定功能的SQL语句,经编译后存储数据库中。 点击查看优缺点。 二、存储过程简单入门 ***第一个存储过程:打印hello word, my name is stored procedure内容*** create or replace ...
  • 数据库 存储过程和函数

    千次阅读 2018-04-15 12:55:24
    存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的 SQL 语句。存储过程和函数可以避免开发人员重复的编写相同的 SQL 语句。而且,存储过程和函数是在 MySQL...
  • mysql数据库储存过程

    千次阅读 2019-08-28 20:26:23
    mysql数据库储存过程 mysql数据库的 ‘储存过程’ 其实就是把多个select操作的语句封装起来,再给他们一个名称用来以后的调用,你可以理解为python中的函数,差不多 优点 1 通过吧处理封装在容易使用的单元中,简化...
  • 查询存储过程中含某字段的所有存储过程: select distinct name,text ...查询某数据库中的所有存储过程: SELECT * FROM SysObjects WHERE [xtype] = ‘P’ 查询某个存储过程的内容: EXEC Sp_HelpText ‘存储过程
  • 一、实验目的 1.了解存储过程的概念、优点 2.熟练掌握创建存储过程的方法 3.熟练掌握存储过程的调用方法 4.了解触发器的概念、优点 5.掌握触发器的方法和步骤 6.掌握触发器的使用
  • 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储...
  • 数据库存储过程分页显示

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 992,772
精华内容 397,108
关键字:

数据库存储过程