精华内容
下载资源
问答
  • 文章目录符号表示创建存储过程执行存储过程查看存储过程修改存储过程删除存储过程例子 存储过程是一种数据库对象,是为了实现某个特定任务,将一组预编译的SQL语句以一个存储单元的形式存储在服务器上,供用户调用。...
  • SQL Server数据库存储过程——以自定义存储过程为例 1、什么是数据库存储过程 存储过程就是预编译SQL语句的集合,这些语句存储在一个名称下并作为一个单元处理。存储过程代替了传统的逐条执行SQL语句的方式 SQL...

    SQL Server数据库存储过程——以自定义存储过程为例

     1、什么是数据库存储过程

    存储过程就是预编译SQL语句的集合,这些语句存储在一个名称下并作为一个单元处理。存储过程代替了传统的逐条执行SQL语句的方式

    SQL server提供了三种类型存储过程:

    系统存储过程:用户管理SQL server和显示有关数据库和用户信息的存储过程

    自定义存储过程:用户在SQL server中通过采用SQL语句创建的存储过程,或者使用向导创建的存储过程。

    扩展存储过程:通过编程语言(如C语言等)创建外部例程,并将这个例程在SQL server中作为存储过程使用。

    本文使用的实例的数据表如下:

     2、存储过程的创建

     2.1 使用向导创建存储过程:在数据库的【可编程性】总找到【存储过程】,右键【新建存储过程】,SQL Server会自动给出一个存储过程的默认的模板。

     2.2使用SQL语句创建存储过程

     

    --不带参数的存储过程,功能是选出所有女生的学号,姓名和性别
    create procedure pro_femalestu_no@
    as
    SELECT Sno,Sname,Ssex
    from Student
    WHERE Ssex='f'
    
    --创建带参数的存储过程,功能是选出学号为@proc_Sno的学生的姓名和年龄
    create procedure proc_student_yes@
    @proc_Sno int 
    as
    select Sname,Sage
    from Student 
    where Sno=@proc_Sno
    

      3、执行存储过程

    --执行不带参数的存储过程
    exec pro_femalestu_no@
    
    --执行带参数的存储过程,需要传入参数的额值
    exec proc_student_yes@       
    @proc_Sno=2017072001
    

    4、查看存储过程的定义

    --查看数据库的存储过程,其中sys.sql_modules为系统视图,
    select* from sys.sql_modules
    
    --查看某一个具体的存储过程的定义
    select OBJECT_DEFINITION(165575628)
    

    5、修改存储过程

     方法1是在对应的存储过程右键修改,方法2是使用SQL语句修改

    --修改带参数的proc_student_yes@存储过程的参数
    alter procedure proc_student_yes@
    @Sname varchar(10)
    as 
    select *  from Student  Where Sname=@Sname
    
    
    --测试是否已经修改成功
    exec proc_student_yes@
    @Sname=‘gg’
    

    6、删除存储过程

    --删除proc_student_yes@这个存储过程
    drop proc_student_yes@
    
    --测试是否完成删除工作
    exec proc_student_yes@

     

    展开全文
  • 自定义存储过程

    2019-01-29 14:30:09
    语法 : 创建时: create proc[edure] 存储过程名  @参数 1 数据类型 =默认值 output, …… @参数N 数据类型 =默认值 output ... 注意接收存储过程返回值时必须加output关键字 ...修改存储过程...

    语法 :

    创建时:

    create proc[edure] 存储过程名  

    @参数 1   数据类型  =默认值  output,

    ……

    @参数N 数据类型 =默认值  output

     

    as

     sql语句

    go

    调用时:

        注意接收存储过程返回值时必须加output关键字

    删除时:

    删除存储过程 : drop proc 存储过程名

     

    修改时 :

    修改存储过程 : alter proc 存储过程名   

    @参数1 数据类型  =默认值 output,

    ……

    @参数2 数据类型  =默认值  output

    as

    sql语句 

    go

    展开全文
  • MySql存储过程自定义函数

    千次阅读 2018-05-12 20:15:23
    存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...

    一、存储过程概述

    存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。类似于 Java 中的方法,定义好之后可以多次调用。

    存储过程由以下几个优点

    1. 通常存储过程有助于提高应用程序的性能。当创建,存储过程被编译之后,就存储在数据库中
    2. 可用于提高代码的重用性,简化操作
    3. 存储的程序是安全的

    二、存储过程语法结构

    创建存储过程的语法结构

    DROP PROCEDURE IF EXISTS [存储过程名];
    DELIMITER [结束标记]
    CREATE PROCEDURE [存储过程名]([参数1], [参数2] ...)
    BEGIN
            [存储过程体(一组合法的SQL语句)]
    END [结束标记]
    DELIMITER ;

    当存储过程有且仅有一条 SQL 语句时,BEGINEND 可以省略。 存储过程中的参数可分为 3 部分,分别是 [参数模式] [参数名] [参数类型] ,比如 IN name VARCHAR[20]

    参数模式也分为 3 种,如下

    IN:输入参数
    OUT:可以作为返回值的参数
    INOUT:既可以作为输入参数,也可以作为返回值参数

    DELIMITER [存储过程名] 本身与存储过程的语法无关,用于表示存储过程的结束。最后一个命令(DELIMITER ;)将分隔符更改回分号(;)。

    调用存储过程使用CALL [存储过程名]([参数1], [参数2] ...);语句。

    删除存储过程使用DROP PROCEDURE IF EXISTS [存储过程名];

    三、存储过程的简单使用

    创建测试表

    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

    3.1创建无参的存储过程

    创建存储过程(向 t_user 数据表中插入两条数据)

    DROP PROCEDURE IF EXISTS myp1;
    DELIMITER $
    CREATE PROCEDURE myp1()
    BEGIN
        INSERT INTO t_user VALUES(NULL, 'Jas'),(NULL, 'Joy');
    END $
    DELIMITER ;

    调用存储过程并查看结果
    这里写图片描述

    3.2创建IN模式参数的存储过程

    创建存储过程(根据传入的 id 获取用户名)

    DROP PROCEDURE IF EXISTS myp2;
    DELIMITER $
    CREATE PROCEDURE myp2(IN userId INT)
    BEGIN
        SELECT name FROM t_user WHERE id = userId;
    END $
    DELIMITER ;

    调用存储过程并查看结果
    这里写图片描述

    3.3创建OUT模式参数的存储过程

    创建存储过程(根据传入的 id 获取用户名赋值给输出变量)

    DROP PROCEDURE IF EXISTS myp3;
    DELIMITER $
    CREATE PROCEDURE myp3(IN userId INT, OUT username VARCHAR(20))
    BEGIN
        SELECT name INTO username    # 将查询到的用户名赋值给 username
        FROM t_user WHERE id = userId;
    END $
    DELIMITER ;

    调用存储过程并查看结果
    这里写图片描述

    3.4创建INOUT模式参数的存储过程

    创建存储过程(传入一个整数参数,值扩大 2 倍后返回)

    DROP PROCEDURE IF EXISTS myp4;
    DELIMITER $
    CREATE PROCEDURE myp4(INOUT a INT)
    BEGIN
        SET a = a * 2;
    END $
    DELIMITER ;

    调用存储过程并查看结果
    这里写图片描述

    四、自定义函数概述

    自定义函数的使用方法与存储过程类似,只不过自定义函数必须要有返回值,返回值有且只有一个。

    自定义函数语法

    DROP FUNCTION IF EXISTS [函数名];
    DELIMITER [结束标记]
    CREATE FUNCTION [函数名]([参数1], [参数2] ...) RETURNS [返回值类型]
    BEGIN 
        [方法体]
        RETURN [返回值];
    END [结束标记]
    DELIMITER ;

    自定义函数中的变量只有两部分,分别是[变量名] [变量类型],比如username VARCHAR[20]。通过上面的语法对比,不知道大家能不能发现MySql 中的自定义函数与 Java 中的有返回值函数很像。

    调用自定义函数的语法是SELECT [函数名]([参数1], [参数2] ...);

    删除自定义函数的语法是 DROP FUNCTION IF EXISTS [函数名];

    五、自定义函数的简单使用

    5.1创建无参的自定义函数

    创建自定义函数(查询 t_user 中的所有记录数,并返回)

    DROP FUNCTION IF EXISTS myf1;
    DELIMITER $
    CREATE FUNCTION myf1() RETURNS INT
    BEGIN
            DECLARE sum INT DEFAULT 0;    # 定义局部变量 sum,默认值为 0
            SELECT COUNT(*) INTO sum    # 将查询的结果赋值给 sum
            FROM t_user;
            RETURN sum;
    END $
    DELIMITER ;

    调用自定义函数并查看结果
    这里写图片描述

    5.2创建有参的自定义函数

    创建自定义函数(根据用户 id 获取用户名,赋值后返回)

    DROP FUNCTION IF EXISTS myf2;
    DELIMITER $
    CREATE FUNCTION myf2(userId INT) RETURNS VARCHAR(20)
    BEGIN
            SET @username='';    # 定义系统会话变量
            SELECT name INTO @username    # 将用户名赋值给 username
            FROM t_user
            WHERE id = userId;
            RETURN @username;
    END $
    DELIMITER ;

    调用自定义函数并查看结果
    这里写图片描述

    六、总结

    自定义函数与存储过程有很多相似的地方,下面是一些主要的区别对比

    1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强
    2. 存储过程可以有返回值也可以没有返回值,而自定义函数必须要返回值,且返回值有且只有一个
    3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,因此它可以在查询语句中位于 FROM 关键字的后面。 SQL 语句中不可用存储过程,而可以使用函数
    展开全文
  • 1.3.1、存储过程的优点:1.3.2、存储过程 与 函数 的区别二、自定义函数 udf(user-defined function )2.1、自定义函数 udf2.2、示例2.2.1、 无参数的自定义函数2.2.2、有参数的自定义函数三、复合结构3.1、语法格式...
  • Hive存储过程自定义函数

    千次阅读 2019-03-22 09:31:26
    之前在Hive中使用自定义函数,是通过udf/udaf来实现,通常是基于Java或Python来...在做数据处理时,Mysql中有大量的存储过程,当数据量特别大的时候,Mysql存储过程执行缓慢,一个存储过程执行耗时数小时。 由于需...

    之前在Hive中使用自定义函数,是通过udf/udaf来实现,通常是基于Java或Python来实现。

    最近发现神器Hplsql(http://www.hplsql.org),可兼容mysql等存储过程等语法,并且已经集成到Hive2.0+版本。

    业务背景:

    在做数据处理时,Mysql中有大量的存储过程,当数据量特别大的时候,Mysql存储过程执行缓慢,一个存储过程执行耗时数小时。

    由于需求比较紧迫,重构战线比较长,调研到Hqlsql,尝试可以兼容Mysql的基本语法。

    安装Hplsql:

    • 下载

    在官网上可以下载到,http://www.hplsql.org/download,如下图:

    安装配置:

    在服务器上解压即可,需要配置两处地方:

    1.vim hplsql  ,修改HADOOP_CLASSPATH

    2.确保HiveServer2服务处于启动状态,并且编辑hplsql-site.xml,将hive2的链接改为和hive-site.xml中的链接一致

    使用:

    1.Hqlsql支持命令行,类似hive -e,可传入语句

    2.Hqlsql支持直接传递脚本,类似hive -f,如图

    3.测试存储过程

    4.测试自定义函数

     

     

     

     

    参考:

    https://www.cnblogs.com/kinginme/p/7267638.html

    http://lxw1234.com/archives/2015/09/497.htm

     

     

     

     

     

     

     

    展开全文
  • MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION 使用CALL语句来调用存储过程存储过程也可以调用其他存储过程 函数可以从语句外调用,能返回标量值 创建存储过程 语法 CREATE ...
  • 2.掌握用户自定义存储过程的创建、修改、删除和执行。 3.掌握触发器的创建、删除、修改及其使用方法。 4.掌握触发器的功能。   一、利用shiyan14.sql完成下列内容。 shiyan14.sql脚本: /****** Object: ...
  • 存储过程:简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,...
  • 一、自定义函数: 1. 可以返回表变量  2. 限制颇多,包括  不能使用output参数;  不能用临时表;  函数内部的操作不能影响到外部环境;  不能通过select返回结果集;...二、存储过程 1. 不能...
  • 一、MySQL数据库常用函数与自定义函数 1 SELECT ABS(-8);#绝对值 2 SELECT MOD(10,9); #取模 3 SELECT FLOOR(12.99); #地板 4 SELECT CEILING(10.01);#天花板 5 SELECT ROUND(12.99);#随机数,看第一个...
  • 一、存储过程存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程/存储函数。 存储过程存储函数的相同点:完成特定功能的程序 存储过程存储函数的区别:是否用return语句返回值 二、创建和使用...
  • 本博文源于mysql基础,主要对自定义函数和存储过程进行学习与练习。涉及自定义函数的创建使用与存储过程的创建使用。
  • 开发自定义的neo4j存储过程(procedures)注意事项及说明: 1.调用方式: 在neo4j的web界面(http://localhost:7474/)命令行输入框内,输入call your_procedure_name。 其中your_procedure_name格式为:包名+函数...
  • 一、自定义函数 用户自定义函数是一种对MySql扩展的途径,其用法与内置函数相同。 必要条件:(1)参数(2)返回值 函数可以返回任意类型的值,同样可以接收这些类型的参数,参数理论上不能超过1024个。 关于...
  • SQL Server存储过程自定义函数

    千次阅读 2018-08-13 13:58:12
    SQL Server支持三种例程:用户定义函数,存储过程,触发器。   用户定义函数 用户定义函数(UDF,user-defined function)的目的是要封装计算的逻辑处理,有可能需要基于输入的参数,并返回结果。 SQL Server...
  • ORACLE pl/sql自定义函数、存储过程

    千次阅读 2019-04-02 09:34:20
    1.​ 掌握存储过程和函数的使用 2.​ 掌握游标的使用 3.​ 掌握程序包的使用 4.​ 掌握触发器的使用 实验内容: SCOTT用户拥有DEPT、EMP、SALGRADE表对象,其中, DEPT是部门信息表,包括:部门编号、部门...
  • 1.MySQL自定义函数简介  在MySQL中使用自定义函数也需要相应的要求,语法如下, 创建新函数: Create function function_name(参数列表) returns返回值类型 函数体内容 相关说明, 函数名:应该合法的标识符,并且...
  • if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_changeusertype]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_.../*--存储过程功能说明 修改当前库...
  • MySQL自定义函数与存储过程

    千次阅读 2017-04-11 11:22:58
    自定义函数 自定义函数 (user-defined function UDF)是一种对mysql扩展的途径,其用法和内置函数相同。 自定义函数的两个必要条件:1、参数(不是必有的,例如select version())2返回值 (必有的)。函数可以...
  • 在做项目的计费功能的时候, 首先需要在数据库里定义 一条费率规则,规则下包括若干个条件 在做到了查费率这一步的时候犯了难,要把商品的 若干个属性 都写到sql里查?...存储过程是由过程化SQL语句书写的
  • -- 其作用为批量修改一个表的一种字段(列)类型为另一种,例如把VARCHAR(255)修改成INT(128)的,纯属娱乐,风险自负。delimiter //DROP PROCEDUREIF EXISTS batch_alter_column_type ; CREATE PROCEDURE batch_...
  • 存储过程只能修改简单的特性,不能修改过程体。如果要修改过程体只能删除后重建。 创建数据表时设置存储引擎 为MyISAM CREATE TABLE ts( -> t VARCHAR(20) -> ) ENGINE = MyISAM; ALTER TABLE ts ENGINE = ...
  • 执行与修改存储过程

    万次阅读 2018-06-22 17:39:51
    1.执行存储过程 要运行某个存储过程,只要简单地通过名字就可以引用它。如果对存储过程的调用不是批处理中的第一条语句,则需要使用EXECUTE关键字。下面是执行存储过程的语法格式。[[EXEC[UTE]]] {[@return_status...
  • 自定义函数 函数:是一系列sql语句的集合,他的注重点主要是返回值,可以作为查询语句的一个部分来调用,针对性强 优点:提供sql语句的重用性,共享性,可移植性,执行速度快 缺点:只能返回一个值,功能复杂,写...
  • 自定义存储过程 语法 CREATE PROCEDURE sp_name ([ proc_parameter ]) [ characteristics ..] routine_body proc_parameter 指定存储过程的参数列表,列表形式如下: [ IN | OUT | INOUT...
  • 二者本质上没有什么区别。当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 302,646
精华内容 121,058
关键字:

修改自定义存储过程