精华内容
下载资源
问答
  • 在SQL Server 的存储过程中,支持输入(Input)、输出参数(Output),也支持返回值参数(ReturnValue) 关于输入参数,大家都很好理解,就是我们提供数值给存储过程,这就好比是编程中按值传递(ByVal)形参。该参数...

    在SQL Server 的存储过程中,支持输入(Input)、输出参数(Output),也支持返回值参数(ReturnValue)

    关于输入参数,大家都很好理解,就是我们提供数值给存储过程,这就好比是编程中的按值传递(ByVal)的形参。该参数传递到存储过程后,经过处理,但调用方是不可以得到经过处理之后的值的。

    而输出参数,则类似于编程中的按引用传递(ByRef)的形参。也就是说,该参数传递到存储过程之后,可以在调用方得到处理过后的值。

    返回值参数不是一个形参,而类似于编程中的返回值类型。它都是通过Return语句来返回的,而且在SQL Server中,必须返回INT型的数据,而且很显然,只能有一个返回值,因为RETURN语句其实是会终止存储过程的。

    下面来看看一个例子

    ALTER PROCEDURE [dbo].[GetCustomers]
    (@rowcount INT OUTPUT)
    AS
        SELECT [CustomerID]
          ,[CompanyName]
          ,[ContactName]
          ,[ContactTitle]
          ,[Address]
          ,[City]
          ,[Region]
          ,[PostalCode]
          ,[Country]
          ,[Phone]
          ,[Fax]
      FROM [Northwind].[dbo].[Customers]
    SET @rowcount=@@rowcount

    上面这个存储过程是通过一个输出参数,来接收一个行计数。

    要实现同样的功能,也可以用返回值参数

    ALTER PROCEDURE [dbo].[GetCustomers]
    AS
        SELECT [CustomerID]
          ,[CompanyName]
          ,[ContactName]
          ,[ContactTitle]
          ,[Address]
          ,[City]
          ,[Region]
          ,[PostalCode]
          ,[Country]
          ,[Phone]
          ,[Fax]
      FROM [Northwind].[dbo].[Customers]
    RETURN @@rowcount

    那么,如何在别的存储过程中调用该存储过程,并且接收它的输出参数或者返回值参数呢

    下面是接收输出参数的示例

    DECLARE @count INT
    EXECUTE GetCustomers  @count OUTPUT
    PRINT @count

    下面是接收返回值参数的示例

    DECLARE @count INT
    EXECUTE @count=GetCustomers
    PRINT @count

    展开全文
  • Mybatis中接收存储过程的 out型参数

    千次阅读 2017-10-17 11:15:48
    Mybats 是 iBatis 被 Google 收购后重新命名一个工程,当然也做了大量升级。iBatis 2.x 调用存储... 存储过程有三种类型的参数,分别为 IN(输入参数),OUT(输出参数),INOUT(输入输出参数)。一个存储过程

    Mybats 是 iBatis 被 Google 收购后重新命名的一个工程,当然也做了大量的升级。iBatis 2.x 调用存储过程有一个专门的标签 ,在 Mybats 3.x 里面已经没有这个标签了,而是通过一个参数 statementType=”CALLABLE” 来区分。

        存储过程有三种类型的参数,分别为 IN(输入参数),OUT(输出参数),INOUT(输入输出参数)。一个存储过程,可以有多个 IN 参数,至多有一个 OUT 或 INOUT 参数。 
    
    ◇ 只有 IN 参数的存储过程 
    

    CREATE PROCEDURE proc_only_input (
    @hello VARCHAR(8) IN
    ) AS

    <select id="selectSth" statementType="CALLABLE" parameterType="hashmap">  
      <![CDATA[ 
    { call proc_only_input(#{good, mode=IN, jdbcType=VARCHAR}) } 
      ]]>  
    </select>

    prams = new HashMap();
    // 调用存储过程的传递的参数名可以不和定义存储过程的参数名保持一致,只要保证它们的顺序是一致的即可。
    params.put(“good”, “china”);
    session.select(“pkg.selectSth”, params);

    ◇ 有 INOUT 或 OUT 参数的存储过程 
    

    CREATE PROCEDURE proc_out (
    @yes VARCHAR(8) IN,
    @fly VARCHAR(16) OUT
    ) AS

    return ‘return something’

    Xml代码 收藏代码

    <select id="selectSth" statementType="CALLABLE" parameterType="hashmap">  
      <![CDATA[ 
    { call proc_out(#{yes, mode=IN, jdbcType=VARCHAR}, #{gog, mode=OUT, jdbcType=VARCHAR}) } 
      ]]>  
    </select>
    Map params = new HashMap();  
    // 调用存储过程的传递的参数名可以不和定义存储过程的参数名保持一致,只要保证它们的顺序是一致的即可。  
    // 同时,存储过程的输出参数的值必须通过 map 来接收  
    params.put("yes", "china");  
    session.select("pkg.selectSth", params);  
    // 得到输出参数的值  
    String result = params.(String) get("gog");  
    展开全文
  • 简介 存储过程(Stored Procedure)是一组为了完成特定功能SQL 语句集,经编译后存储在数据库中。...Transact SQL存储过程可以接受输入参数,以参数形式返回输出值,或者返回成功、失败状态信息。

    简介

    • 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。
    • Transact SQL存储过程可以接受输入参数,以参数形式返回输出值,或者返回成功、失败的状态信息。

    系统存储过程

    在这里插入图片描述

    自定义存储过程

    • 语法格式:
    CREATE PROCEDURE 过程名
    
    • 如:
    USE 教学管理
    GO
    CREATE PROCEDURE P_学生部分信息 
    AS
    SELECT 学号,姓名,专业,所在院系,籍贯
    FROM 学生表
    
    USE 教学管理
    IF EXISTS(SELECT * FROM sysobjects WHERE name='SC_infor' AND type='p')
       BEGIN
         DROP PROCEDURE SC_infor
       END
    GO
    CREATE PROCEDURE SC_infor(@smajor CHAR(20), @cname CHAR(20))
    AS
    SELECTS.sno,sname,smajor,sdepa,O.cno,cname,grade
      FROM student S, enrollment E, offering O, course C
      where smajor=@smajor
       AND cname=@cname
       AND S.sno=E.sno
       AND E.ono=O.ono
       AND O.cno=C.cno
    GO
    

    执行存储过程

    • 语法格式:
    EXEC 过程名 [参数, ...]
    
    • 如:
    DECLARE @专业 CHAR(20), @课名 CHAR(20)
    SET @专业='计算机'
    SET @课名='数据结构'
    EXEC SC_INFOR @专业, @课名
    

    带输出参数的存储过程

    CREATE PROCEDURE P_计算平均成绩
    (@学号 CHAR(7),@平均成绩 TINYINT OUTPUT)
    AS
    IF @学号 IS NULL RETURN 1
    IF NOT EXISTS (SELECT * FROM 选课表 WHERE 学号=@学号)
       RETURN 2
    SELECT @平均成绩=avg(成绩)
    FROM 选课表
    WHERE 学号=@学号
    

    接收存储过程状态值

    EXECUTE @return_status = procedure_name
    

    删除存储过程

    DROP PROCEDURE 过程名
    
    展开全文
  • 什么是存储过程 存储过程是存储在Oracle数据库中的一段plsql程序块,我们可以使用存储过程来...存储过程的使用 创建存储过程 CREATE OR REPLACE PROCEDURE INSERT_DEPT_PROCEDURE( deptNo IN NUMBER,--输入型参数
  • 存储过程与触发器存储过程存储过程的概述创建和执行用户存储过程不带参数的存储过程带输入参数的存储过程带输出参数的存储过程管理存储过程系统存储过程和扩展存储过程系统存储过程扩展存储过程存储过程的应用触发器...
  • 存储过程

    2018-10-08 09:29:26
    存储在服务器上 且是编译好的,这点类似函数 ...从参数的输入输出这方面,可以把存储过程分为三大类   参数输入型存储过程(IN) create or replace procedure p1 (v_id in emp.empno%type) i...
  • SQL 存储过程

    2020-10-10 18:38:26
    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...
  • Java调用oracle存储过程

    2020-12-22 18:22:50
    存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...
  • 在使用存储过程中,我们有时需要传递可变数组,存在两种情况,存储过程有输入输出参数为自定义可变数组的。在java代码中,如何正确调用oracle存储过程的自定义可变数组类型,在这里做一下示例说明. java调用...
  • 存储函数和过程

    2017-08-15 22:04:00
    存储过程和函数 存储过程: 对一个模块封装 函数: 功能几乎一样 区别: 函数必须通过... 输入型参数 输出型参数 8.15 DECLAREc student%ROWTYPE; CURSOR c_cursor IS SELECT * FROM student ; BEGIN OPEN c_c...
  • 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...
  • oracle存储过程返回一个结果集

    千次阅读 2019-07-10 21:45:08
    存储过程是没有返回值,只是在参数列表中使用in,out类型参数来区分输入变量参数输出参数,在sqlplus中,我们可以进行打印输出。 关于输出变量类型,其实简单点可以是字符,数字,复杂点可以是结果集,任意...
  • 在使用存储过程中,我们有时需要传递可变数组,存在两种情况,存储过程有输入输出参数为自定义可变数组的。在java代码中,如何正确调用oracle存储过程的自定义可变数组类型,在这里做一下示例说明. java调用...
  • (2)使用“实验一”中数据库“abc”,创建一个带有输入参数的存储过程proc_abc,查询指定职工销售记录,用户输入职工编号,存储过程返回职工名称、产品名称、销售日期、销售数量,假如执行存储过程时所提供...
  • in out类型参数的存储过程存储过程:CREATE OR REPLACE PROCEDURE "SITE_EDITSITEDATAEXIST" (id_ number,name_ varchar2,httpRoot_ varchar2,flag out integer )//out 只具备输出功能 in out 为输入/输出型astempN
  • 1. 调用包含out/ in out类型参数的存储过程 存储过程: CREATE OR REPLACE PROCEDURE "SITE_EDITSITEDATAEXIST" (id_ number, name_ varchar2, httpRoot_ varchar2, flag out integer )//out 只具备输出功能 in...
  • in out类型参数的存储过程存储过程:CREATE OR REPLACE PROCEDURE "SITE_EDITSITEDATAEXIST" (id_ number,name_ varchar2,httpRoot_ varchar2,flag out integer )//out 只具备输出功能 in out 为输入/输出型...
  • 存储函数

    2017-10-10 22:52:08
    什么是存储函数 存储函数与存储过程的区别 什么时候使用存储过程,什么时候使用存储... 存储过程与存储函数一样,都使用 in 和 out 来表示 输入型参数和输出型参数。 b. 创建存储函数的语法格式:CREATE OR REPLACE
  • 大型数据库Oracle笔记整理第七章 第七章存储过程、...存储过程是一种命名pl/sql程序块,它可以接受零个或多个参数作为输入输出,或者既作输入又作输出的参数。 过程被存储在数据库中,并且过程没有返回值。 存
  • 3. 开关时间: 由于电荷的存储效应,PIN管通断和断通都需要一个过程,这个过程所需时间 4. 承受功率: 在给定工作条件下,微波开关能够承受最大输入功率 5. 电压驻波系数: 仅反映端口输入输出匹配情况 6...
  • 面试之数据库篇

    2019-08-19 18:38:08
    本篇是我总结的面试中常见的数据库的知识点,可能会有疏漏或者我自己理解不到位的地方,欢迎留言指正。...存储过程的特点:有输入输出参数,可以声明变量,可使用if/else,case,while等控制语句,通过...
  • in out类型参数的存储过程 存储过程: CREATE OR REPLACE PROCEDURE "SITE_EDITSITEDATAEXIST" (id_ number, name_ varchar2, httpRoot_ varchar2, flag out integer )//out 只具备输出功能 in out 为输入/输出型 ...
  • Mybatis源码分析

    2019-09-24 16:00:40
    Mybatis源码解析: ...Mybatis的主要目的就是管理执行SQL参数的输入输出,编写SQL和结果集的映射是mybatis的主要优点 Mybatis中主要类和接口: ​ 1、Configuration:将Mybatis配置文件中的信息...
  • Web安全维护

    2017-10-01 12:40:51
    原因:发生原因是网站将用户输入的内容输出到页面上,在这个过程中可能有恶意代码被浏览器执行。 1.反射xss: 它是通过诱使用户打开一个恶意链接,服务端将链接中参数的恶意代码渲染到页面中,再传递给用户由...
  • 存储存储过程 是一段代码(过程),存储在数据库中sql组成。 一个存储过程通常用于完成一段业务逻辑,例如报名,交班费,订单入库等。 而一个函数通常专注与某个功能,视为其他程序服务,需要在其他语句中调用...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 354
精华内容 141
关键字:

存储过程的输入输出型参数