精华内容
下载资源
问答
  • 2019-11-01 14:27:41
    参数类型是否返回作用
    IN向存储过程传入参数,存储过程中修改该参数的值,不能别返回
    OUT把存储过程计算的结果放在该参数中,调用者可以得到返回值
    INOUTIN和OUT的结合,既用于存储过程的传入参数,同事又可以把计算结果放到参数中
    更多相关内容
  • 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存储过程 变量和参数类型

    万次阅读 2018-03-27 10:23:04
    一个简单的存储过程delimiter $$ create procedure testa() begin select * from p_m_table ; end; $$ delimiter ;存储过程的结构组成:1.创建格式 :create procedure 存储过程名2.包含一个以上代码块,代码块在...

    一个简单的存储过程

    delimiter $$
    create procedure testa()
    begin
       select * from p_m_table ;
    end;
    $$
    delimiter ;

    存储过程的结构组成:

    1.创建格式 :create procedure 存储过程名

    2.包含一个以上代码块,代码块在begin和end 之间 begin和end 可以嵌套使用

    3.在命令行中创建需要定义提交的分隔符 delimiter $$

    存储过程的特点:

    1.能完成较复杂的判断和运算

    2.可编程性强,灵活

    3.SQL编程的代码可重复使用

    4.执行速度相对快一些

    5.减少网络之间数据传输,节省开销

    存储过程的变量:

    需求:编写存储过程,使用变量取user_id ='APP-2016-00494878'得用户名 并返回

    delimiter $$
    create procedure testd()
    begin
      declare my_uname varchar(32) default '';
      set my_uname='linkui';
      select uname into my_uname from users where user_id = '';
      select my_uname;
    end;
    $$
    delimiter ;

    特点:

    1.变量的声明使用 declare,一句declare只声明一个变量,变量必须先声明后使用

    2.变量具有数据类型和长度,与mysql的SQL数据类型一致,因此甚至可以指定默认值、字符集 和排序规则

    3.变量可以通过set赋值,也可以通过select into的方式赋值

    4.变量需要返回,可以使用select语音,如:select 变量名

    5.变量是有作用域的,作用范围在begin与end直接

    6.需要在多个块直接传递值,可以使用全局变量,即放在所有代码块之前

    7.传参变量是全局的,可以在多个块之间其作用

    存储过程的传入参数 IN

    需求:编写存储过程,传入 user_id 返回改用户的 user_name

    delimiter $$
    create procedure teste(IN my_user_id varchar(32))
    begin
      declare user_name1 varchar(32) default '';
      select user_name into user_name1 from p_app_user where user_id = my_user_id;
      select user_name1;
    end;
    $$
    dilimiter ;

    1.传入参数:类型为 IN,表示该参数的值必须在调用存储过程时指定,如果不显示指定位IN,

    那么默认就是IN类型

    2.IN类型参数一般只用于传入,在调用存储过程中一般不作修改和返回

    3.如果调用存储过程中需要修改和返回值,可以使用OUT类型参数

    存储过程的传出参数 OUT

    需求:调用存储过程时,传入 user_id 返回改用户的user_name

    delimiter $$
    create procedure teste(IN my_user_id varchar(32),OUT user_name1 varchar(32))
    begin
      select user_name into user_name1 from p_app_user where user_id = my_user_id;
      select user_name1;
    end;
    $$
    dilimiter ;

    调用存储过程:

    set @user_name:='';
    call teste('APP-2016-00494878',@user_name);
    select @user_name as user_nameAA

    1.传出参数:在调用存储过程中,可以改变其值,并可返回

    2.OUT是传出参数,不能用于传入参数值

    3.调用存储过程时,OUT参数也需要知道,但必须是变量,不能是常量

    4.如果既需要传入,同时需要传输,则可以使用INOUT参数类型

    存储过程的可变参数 INOUT

    需求:调用存储过程时 ,参数user_id和user_name既是传入,也是传出参数

    delimiter $$
    create procedure teste(INOUT user_id1 varchar(32),INOUT user_name1 varchar(32))
    begin
      set user_id1='APP-2016-00494878';
      set user_name1 = 'linkui';
      select user_id,user_name into user_id1,user_name1 from p_app_user where user_id = user_id1;
    end;
    $$
    dilimiter ;

    调用存储过程:

    set @user_name1:='';
    set @user_id1:='';
    call teste(@user_id1,@user_name1);
    select @user_id1 as user_idAA,@user_name1 as user_nameAA

    1.可变变量INOUT:调用时可传入值,在调用过程中,可修改其值,同时也可返回值

    2.INOUT参数集合了IN和OUT类型的参数功能

    3.INOUT调用时传入的是变量,而不是常量

    展开全文
  • 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;

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

     

    展开全文
  • 存储过程中使用date日期类型参数,需要定义日期类型date的变量重新赋值一次,赋值的过程貌似会做一次转换,之后才能正常使用,不然使用这个日期查询结果不准确,经常会得到无效的结果。 CREATE OR REPLACE ...
  • 1.如果是命令窗口就用exec 存储过程名:1EXECprocedure;--procedure是存储过程名2.如果是 SQL窗口就用 begin 存储过程名 end;123beginprocedure;--procedure是存储过程名end;3.如果是程序中调用就用 call 存储过程名...
  • 存储过程概念 存储过程就是提前把已经编译好的一段 PL/SQL 语言,放置在数据库端,可以直接被调用。这一段 PL/SQL 一般都是固定步骤的业务。 创建存储过程语法: create [or replace] PROCEDURE 过程名[(参数名 in/...
  • sql server 中 存储过程自定义类型表作为参数,怎么调试这个存储过程
  • oracle存储过程接收自定义数组类型参数 2016年10月29日 09:53:23 ntuloser 阅读数:1092 标签: oraclejava存储mybatis 更多 个人分类: 数据库 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 在使用oracle进行批量插入的时,如果数据量较小可以使用install all的语法进行批量插入。... 使用存储过程批量插入很显然要接收一个数组当参数,而且这个数组里的元素类型应该和java里自定义的数据模型对应。
  • Oracle存储过程_参数

    千次阅读 2019-05-27 00:06:36
    --定义打印的存储过程 CREATE OR REPLACE PROCEDURE println (str varchar) AS BEGIN dbms_output.put_line(string); --输出语句 END; --定义测试in模式的存储过程 CREATE OR REPLACE P...
  • Oracle存储过程参数理解

    千次阅读 2018-04-28 15:39:36
    一、过程 (存储过程) 过程是一个能执行某个特定操作的子程序。使用CREATE OR REPLACE创建或者替换保存在数据库中的一个子程序。示例1:声明存储过程,该过程返回dept表行数DECLARE PROCEDURE getDeptCount AS ...
  • 存储过程没有返回值,存储函数返回值(return语句,要返回值的类型)。 区别:存储函数可以返回值,而存储过程没有返回值。 存储过程的out参数也可以实现返回值,所以存储过程可以替代存储函数。(存储函数是...
  • SQLserver创建参数存储过程

    千次阅读 2019-01-16 21:54:49
    SQLserver创建参数存储过程 ql数据库的存储过程是一种在你关闭数据库时,储存你代码的一种方法,并且能实现以简短的指令来修改你的数据。, 那么就让我们看看这简短明了的参数存储过程。 一.打开SQL数据库,找到...
  • mysql存储过程之传递参数

    千次阅读 2022-02-15 14:05:45
    ( in 参数名1 参数类型,in 参数名2 参数类型,....) delimiter $ create procedure func(in id int) begin select * from 表 where Id = id;--查询Id=id的信息 end $ delimiter; call func(101);--调用 ...
  • Oracle调用带out参数存储过程

    千次阅读 2021-06-03 11:51:01
    当我们在oracle中写完一个存储过程,我们通常需要使用测试调用存储过程,调用测试之后,然后提交执行结果,就可以去数据库中执行sql,查看我们的存储过程执行的数据是否符合预期效果。 实际测试中,我们可能不希望...
  • 存储过程参数

    千次阅读 2019-01-11 11:25:09
    存储过程参数 存储过程如何与调用者进行交互呢,交互方式之一就是参数。 Call test3(2) 注意:声明变量的那句话就不需要了!!(参数、 名字、 类型 ) 查询: SET @uname:=''; CALL test4(2,@...
  • mysql存储过程教程(1)

    千次阅读 2021-02-07 17:30:12
    MySQL存储过程1.1 CREATE PROCEDURE (创建)CREATE PROCEDURE存储过程名(参数列表)BEGINSQL语句代码块END注意:由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数默认都是一个IN参数...
  • 响应时间上来说优势,可以给我们带来运行效率提高的好处,且使用存储过程的系统更加稳定。缺点:维护性较差,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难创建一个表Books –1:不带参数...
  • MySql存储过程,传数组参数

    千次阅读 2018-09-17 10:38:40
    第二版想法为,把所有参数传入到存储过程,循环参数为一个数组,mysql存储过程里没有split函数, 取数组中的值通过substring截出,通过截的id值作为条件查询数据,查询到的数据可能是 多条记录,所有想通过游标...
  • Oracle存储过程之带返回参数

    万次阅读 2015-12-24 17:15:11
    1、基本语法 创建存储过程,需要CREATEPROCEDURE或CREATE ...CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型...)] {AS|IS} [说明部分:参数定义、变量定义、游标定义] BEGIN  可
  • sqlserver之基础存储过程 存储过程是数据库中,一组为了完成特定功能,预编译的SQL语句集 存储过程的优点 1.存储过程在服务器端调用,执行速度快...存储过程类型 1.不含参数的存储过程 (重点变量先声明在使用,declare
  • Oracle存储过程参数理解 (2010-11-12 11:23:34)  转自:http://blog.sina.com.cn/s/blog_45daee4a0100n9ar.html 一、过程 (存储过程)  过程是一个能执行某个特定操作的子程序。使用CREATE OR REPLACE...
  • IN 输入参数:表示该参数的值必须在调用存储过程时指定赋值,在存储过程中修改该参数的值不能被返回,为默认值 OUT 输出参数:该值可在存储过程内部被改变,并可返回 INOUT 输入输出参数:调用时必须指定具体值,并且可...
  • 存储过程传入参数

    千次阅读 2018-09-11 17:43:38
    create procedure pout(OUT p_out int)/**创建存储过程,p_out是传入的int类型值**/ begin/**开始**/ select p_out;/**打印P_out的值为null**/ set p_out =2;/**设置p_out的值为2**/ select p_out;/**打印P_...
  • SQL存储过程参数默认值

    千次阅读 2019-07-13 22:27:06
    MS SQL 存储过程参数默认值例子:create procedure pro_Name( @cNo varchar(8), @cName varchar(20)= '%')as begin SQL 语句集...
  • MySQL-存储过程(数据类型、函数)

    千次阅读 2019-05-25 03:33:45
    主要介绍存储过程的创建,注意事项,数据类型,常用函数。
  • KETTLE调用带有参数存储过程

    千次阅读 2019-03-18 12:42:40
    先写一个带参数的测试存储过程 DELIMITER $$ CREATE PROCEDURE `test_db`.`pro_test`(IN input_date DATE) BEGIN SELECT * FROM nametable WHERE DATETIME = input_date; END$$ DELIMI...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 912,170
精华内容 364,868
关键字:

存储过程有哪些类型的参数