精华内容
下载资源
问答
  • 存储过程的参数类型
    千次阅读
    2019-11-01 14:27:41
    参数类型是否返回作用
    IN向存储过程传入参数,存储过程中修改该参数的值,不能别返回
    OUT把存储过程计算的结果放在该参数中,调用者可以得到返回值
    INOUTIN和OUT的结合,既用于存储过程的传入参数,同事又可以把计算结果放到参数中
    更多相关内容
  • MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢
  • mysql存储过程参数类型

    千次阅读 2018-06-15 14:14:44
    存储过程可以理解成程序中封装的代码块,并且可以相互调用由于下面的例子会使用变量,那么先了解一下变量。变量分为用户变量和系统变量用户变量变量名以@开头创建用户变量mysql> select 'hello' into @a; ...

    存储过程可以理解成程序中封装的代码块,并且可以相互调用

    由于下面的例子会使用变量,那么先了解一下变量。

    变量分为用户变量系统变量

    用户变量变量名以@开头

    创建用户变量

    mysql> select 'hello' into @a;
    Query OK, 1 row affected (0.00 sec)
    mysql> set @b=123;
    Query OK, 0 rows affected (0.00 sec)


    具有IN、OUT、INOUT三种参数类型

    IN输入参数,该参数必须在调用存储过程前指定,并且在过程中修改的值不可返回

    mysql> create procedure pro_int(IN a int)
        -> begin
        -> select a;
        -> set a = 111;
        -> select a;
        -> end;
        -> $$
    Query OK, 0 rows affected (0.00 sec)
    mysql> call pro_int(@b);
        -> $$
    +------+
    | a    |
    +------+
    |  123 |
    +------+
    1 row in set (0.00 sec)
    
    +------+
    | a    |
    +------+
    |  111 |
    +------+
    1 row in set (0.01 sec)
    
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> select @b;
        -> $$
    +------+
    | @b   |
    +------+
    |  123 |
    +------+
    1 row in set (0.00 sec)
    OUT输出参数,值可在内部修改和返回
    mysql> create procedure pro_out(OUT a int)
        -> begin
        -> select a;
        -> set a = 111;
        -> select a;
        -> end;
        -> $$
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> call pro_out(@b);
        -> $$
    +------+
    | a    |
    +------+
    | NULL |
    +------+
    1 row in set (0.00 sec)
    
    +------+
    | a    |
    +------+
    |  111 |
    +------+
    1 row in set (0.01 sec)
    
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> select @b $$
    +------+
    | @b   |
    +------+
    |  111 |
    +------+
    1 row in set (0.00 sec)

    INOUT 调用时指定,可修改和返回

    mysql> create procedure pro_inout(INOUT a int)
        -> begin
        -> select a;
        -> set a = 111;
        -> select a;
        -> end;
        -> $$
    Query OK, 0 rows affected (0.00 sec)
    mysql> set @b=222;
        -> $$
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> call pro_inout(@b);
        -> $$
    +------+
    | a    |
    +------+
    |  222 |
    +------+
    1 row in set (0.00 sec)
    
    +------+
    | a    |
    +------+
    |  111 |
    +------+
    1 row in set (0.01 sec)
    
    Query OK, 0 rows affected (0.02 sec)
    mysql> select @b $$
    +------+
    | @b   |
    +------+
    |  111 |
    +------+
    1 row in set (0.00 sec)


    展开全文
  • MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢? 一、MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数...
  • 存储过程 in参数 的使用 ... -- in 是一个形参 你可以 定义 数据类型 调用存储过程的时候 可以给 实参 DELIMITER ;; CREATE PROCEDURE name_in_2(IN `time` VARCHAR(50)) -- set赋值的 使用 BEGIN SEL
  • 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程参数又将如何处理呢?其实很简单,mybatis提供了typeHandlers可以创建一个数组类型类型处理器,...
  • C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
  • in、out、inout 传入指:直接向参数传入具体的值(in) 通过变量赋值(in,in out); 传出指:通过计算、程序块中赋值在传出一个新的结果值 out、 in out;

    今天有用到存储过程的参数,晚上回来简单梳理辨析下三种类型,大家可以留言多多讨论哈~

    书面定义其他博主已经说的很清晰,概念很简单,我就不写了,废话不多说,直接看实例

    参数类型:

    下面举例讲解何为传入值,传出值。

    调用后结果:

     

     其中,v_x,v_m均为in参数形式,说明in可直接传入实际的值,也可传入一个变量,调用时再赋值;

    而p_n没有值,即不能传入值!


    传出值:

     

     传出值即指,参数在程序编辑块中,是否可以被重新定义,out、in out 类型的p_y、p_n均被重新赋值,而in类型的p_x报错;


     总结:

    传入指:直接向参数传入具体的值(in)
                   通过变量赋值(in,in out);
    传出指:通过计算、程序块中赋值在传出一个新的结果值 out  in out;

    大家可以留言多多讨论哈~

     

    展开全文
  • MySQL存储过程参数

    千次阅读 2021-12-23 12:13:32
    细节注意:下面的存储过程创建会报错,他的类型以及类型长度需要和创建表字段的类型类型长度一致 -- 创建一个存储过程:添加一个员工信息 DELIMITER $$ CREATE PROCEDURE procedure_test4(IN `p_name` VA

    MySQL存储过程的参数

    MySQL存储过程的参数共有三种:IN \ OUT \ INOUT

    注:未经过本文作者同意,严禁转载

    输入参数

    输入参数(IN):在调用存储过程中传递数据给存储过程的参数(在调用的存储过程必须具有实际值的变量 或者 字面值)

    细节注意:下面的存储过程创建会报错,他的类型以及类型长度需要和创建表字段的类型和类型长度一致

    -- 创建一个存储过程:添加一个员工信息
    DELIMITER $$
    CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR,IN `p_call` VARCHAR)
    BEGIN
      INSERT INTO employees(`name`,`call`)
      VALUES(`p_name`,`p_call`);
    END $$
    

    在这里插入图片描述

    正确写法

    -- 创建一个存储过程:添加一个员工信息
    DELIMITER $$
    CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR(64),IN `p_call` VARCHAR(64))
    BEGIN
      INSERT INTO employees(`name`,`call`)
      VALUES(`p_name`,`p_call`);
    END $$
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrDYIwVa-1640232786855)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223112719116.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcw4KheE-1640232786856)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223112002450.png)]

    现在来测试一下是否可以调用存储过程并且添加数据进去

    先看一下表原来的数据

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tFaNe9UZ-1640232786856)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223113244925.png)]

    调用一下存储过程

    CALL procedure_test4('李四','321321')
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7FXE03S-1640232786857)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223113313119.png)]

    再来看一下结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5L5sTMe-1640232786858)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223113351902.png)]

    输出参数

    输出参数(OUT):将存储过程中产生的数据返回给调用者,相当于Java方法的返回值,但不同的是一个存储过程可以有多个输出参数

    例子:

    -- 创建一个存储过程:根据id查询出该员工姓名
    DELIMITER $$
    CREATE PROCEDURE procedure_test5(IN `p_id` INT(64),OUT `p_name` VARCHAR(64))
    BEGIN
      SELECT `name` INTO `p_name` FROM employees WHERE id=`p_id`;
    
    END $$
    

    在这里插入图片描述

    创建没问题,接下来调用测试一下

    SET @e_name=''
    CALL procedure_test5('2',@e_name)
    SELECT @e_name FROM DUAL 
    

    在这里插入图片描述

    输入输出参数(INOUT)

    -- INOUT(输入输出参数)
    DELIMITER $$
    CREATE PROCEDURE procedure_test6(INOUT str VARCHAR(64))
    BEGIN
      -- 把你传进来的值作为条件,查询出的结果再重新赋值给 str 返回出去
      -- 这里的 str 既当输入参数,也当输出参数
      SELECT `name` INTO str FROM employees WHERE id=str;
    
    END $$
    

    在这里插入图片描述

    创建没问题,接下来测试一下

    SET @e_name='2'
    CALL procedure_test6(@e_name)
    SELECT @e_name FROM DUAL 
    

    在这里插入图片描述

    也是没问题的,但,在实际开发中 INOUT 建议少用,原因:代码的可读性会变差

    展开全文
  • 在使用过程中,传一个表(数据集)的需求是真实存在的,经常有人问。 于是,总结了以前零零散散的知识,汇集为本文,分享给读者。 USE tempdb GO IF OBJECT_ID('t') IS NOT NULL DROP TABLE t GO CREATE TABLE t...
  • 存储过程:create procedure Pro_GetUserInfo(in szEmpName varchar(1000))-> begin-> declare strSql varchar(1000);-> set strSql = concat('insert into TmpTable_UserInfo(EmpName,PcName,IP) select ...
  • 一个简单的存储过程 delimiter $$ create procedure testa() begin select * from p_m_table ; end; $$ delimiter ; 存储过程的结构组成: 1.创建格式 :create procedure 存储过程名 2.包含一个以上代码块,...
  • SQL存储过程参数

    2021-04-16 00:12:02
    3种参数类型: IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量) OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量) INOUT输入输出参数:既表示调用者向过程传入值,又表示...
  • MySQL 存储过程参数

    千次阅读 2021-01-18 19:14:57
    MySQL 存储过程参数MySQL存储过程参数简介在现实应用中,开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。IN- 是默认模式。在存储过程中定义IN参数...
  • 怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
  • MySQL 存储过程 参数类型

    千次阅读 2013-09-03 00:51:17
    MySQL 存储过程参数类型(in、out、inout) 此小节内容来自: 参见地址:http://www.blogjava.net/nonels/archive/2009/04/22/233324.html MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C ...
  • 在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入。 在2008中提供了表值参数。使用表值参数,可以不必创建临时表或许多参数...
  • mysql存储过程 变量和参数类型

    万次阅读 2018-03-27 10:23:04
    一个简单的存储过程delimiter $$ create procedure testa() begin select * from p_m_table ; end; $$ delimiter ;存储过程的结构组成:1.创建格式 :create procedure 存储过程名2.包含一个以上代码块,代码块在...
  • 利用asp连接sqlserver2000的存储过程是需要设置数据格式,这里是所有数据格式的编码代号
  • 1、简单类型的集合(数组)类型作为存储过程参数 1.1、创建一个INT的集合类型 CREATE OR REPLACE TYPE VR IS VARRAY(10) OF INT; 1.2、创建一个简单的存储过程 CREATE OR REPLACE PROCEDURE D_V(ID IN VR) AS ...
  • Java调用存储过程--传入集合参数 具体的方法描述分析
  • Oracle存储过程及调用

    2020-12-16 01:18:05
    create procedure 存储过程名称(随便取) (变量1 数据类型,变量2 数据类型,...,变量n 数据类型) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end; (3)带输入、...
  • sysobjects表可以得到存储过程名,syscolumns表中存着对应存储过程参数 select sc.name as 参数名,st.name as 类型,sc.length as 长度 from syscolumns sc inner join sysobjects so on so.id=sc.id inner join ...
  • 什么是存储过程? 特点 语法格式 局部变量 用户变量 系统变量 查看修改全局变量 查看修改会话变量 传入参数 输出参数 修改传入参数值 每文一语 什么是存储过程? MySQL 5.0 版本开始支持存储过程。 ...
  • 一.mysql存储过程语法: ...mysql> create procedure 方法名(参数类型参数 参数的数据类型)  -> begin(表示sql语句的开始)  -> select p_in_out as p_01; (查询输入参数)  -> set 参
  • 后台调用带参数存储过程,返回DataSet类型数据
  • SQL Server存储过程数组参数

    千次阅读 2016-06-21 11:12:02
     SQL Server存储过程不支持数组参数类型,要传递数量不定的参数,需要采用其他方式进行传递   方法一:利用字符串截取拆分数组字符串 -- ============================================= -- Author: ...
  • out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程 in out 表示高参数可以向该过程中传递值,也可以将某个值传出去 一:在函数中: CREATE OR REPLACE FUNCTION get_salary( ...
  • mysql存储过程教程(1)

    千次阅读 2021-02-07 17:30:12
    MySQL存储过程1.1 CREATE PROCEDURE (创建)CREATE PROCEDURE存储过程名(参数列表)BEGINSQL语句代码块END注意:由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数默认都是一个IN参数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 948,136
精华内容 379,254
关键字:

存储过程的参数类型

友情链接: 49Hash_Table.rar