`
Aga
  • 浏览: 218563 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

今天写的一个存储过程

阅读更多
pl/sql没有白学,效果还不错。今天写了个pl/sql的业务流程部分。
create or replace
PROCEDURE Bind(
  mac IN COMPUTER.COMP_MAC%TYPE, --'abc'
  outer_ip IN COMPUTER.COMP_OUTERIP%TYPE, --222.30.55.11
  inner_ip IN COMPUTER.COMP_INTERIP%TYPE, --'192.168.1.1'
  bar IN COMPUTER.BAR_ID%TYPE, --1
  url_ie OUT adresource.ADRES_URL%TYPE,
  url_desktop OUT adresource.ADRES_URL%TYPE
  )
AS

var NUMBER;

--Initial a cursor
CURSOR cur_url(bar_id IN AD2BAR.BAR_ID%TYPE)
  IS
  SELECT ADRES_URL
  FROM ADRESOURCE 
    LEFT JOIN ADPLAN 
    ON ADRESOURCE.ADRES_ID = ADPLAN.ADRES_ID
    LEFT JOIN AD2BAR
    ON ADPLAN.PLAN_ID = AD2BAR.PLAN_ID
  WHERE AD2BAR.BAR_ID = bar_id
    AND ADPLAN.PLAN_START < SYSDATE
    AND ADPLAN.PLAN_END > SYSDATE
  ORDER BY ADRESOURCE.ADRES_TYPE;

TYPE UrlTab IS TABLE OF adresource.ADRES_URL%TYPE;

urls URLTAB;

BEGIN

SELECT COUNT(*) INTO var
FROM computer
WHERE computer.BAR_ID=bar
  AND computer.COMP_MAC=mac
  AND computer.COMP_INTERIP=inner_ip
  AND computer.COMP_OUTERIP=outer_ip;

IF var = 0 THEN
--if the computer which contains the mac does not exist,
--delete the record which has the same mac address and 
--re-insert it with the new information

  --delete the record
  DELETE FROM COMPUTER
  WHERE COMPUTER.COMP_MAC = mac;
  --insert the record
  insert into computer( bar_id, comp_mac, comp_interip, comp_outerip, comp_time, comp_updatetime)
  values(bar,mac,inner_ip,outer_ip,systimestamp, systimestamp);
  --
  
  --DBMS_OUTPUT.PUT_LINE('0');--trace tool
ELSE-- This client already exists in the db.
  
  --update the record to notify the computer's last power on
  UPDATE COMPUTER
  SET COMP_UPDATETIME=SYSTIMESTAMP
  WHERE MAC = mac;
  
  --DBMS_OUTPUT.PUT_LINE('NOT 0');--trace tool
END IF;

  OPEN cur_url(bar);
  FETCH cur_url BULK COLLECT INTO urls;
  CLOSE cur_url;
  
  --DBMS_OUTPUT.PUT_LINE(urls(1));--trace tool
  --DBMS_OUTPUT.PUT_LINE(urls(2));--trace tool
  url_ie := urls(1);
  url_desktop := urls(2);

END;


下面是测试驱动程序。
declare
  ie varchar2(100);
  desktop varchar2(100);
begin
  bind('chang','222.30.55.10','192.168.1.2',1, ie, desktop);
  dbms_output.put_line(desktop);
  dbms_output.put_line(ie);
end;
/
分享到:
评论

相关推荐

    C#如何写删除图书存储过程

    在本例中,我们关注的是如何在C#中调用一个存储过程来实现图书的删除操作。下面将详细介绍如何创建、执行和管理这样的存储过程,以及如何在C#中调用它。 1. 创建存储过程: 在SQL Server中,我们可以使用`CREATE ...

    单位写的11个优秀存储过程

    一个存储过程由一系列的SQL语句组成,包括SELECT、INSERT、UPDATE、DELETE等,以及控制流程语句(如IF-ELSE、WHILE、DECLARE等)。这些语句可以按照特定的逻辑顺序执行,使得处理复杂的业务规则变得更加容易。存储...

    存储过程写九九乘法表

    ### 存储过程写九九乘法表 #### 背景介绍 在数据库操作中,存储过程是一种预编译的SQL代码集合,它可以接受输入参数、返回单个或多个结果集以及返回值。存储过程可以提高代码的重用性和执行效率,并且能够简化复杂...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动...只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    执行存储过程的代码和数据库脚本

    存储过程是数据库管理系统中的一个重要组成部分,它是一组为了完成特定功能的SQL语句集合,预编译后存储在数据库中,可以按需调用,提高了数据操作的效率和安全性。本文将围绕“执行存储过程的代码和数据库脚本”这...

    存储过程文档--mysql

    存储过程是一个预先写好的 SQL 语句集合,通过存储过程,可以将复杂的操作封装起来,并与数据库提供的事务处理结合使用。存储过程可以重复使用,减少数据库开发人员的工作量,并提高安全性。 存储过程的优点 1. ...

    手写存储过程分页.txt

    它们可以接受参数、执行多个操作,并返回一个或多个结果集。存储过程的主要优点包括:提高性能、减少网络流量、增强安全性以及提高代码重用性等。 #### 分页查询概述 分页查询是指将大量数据按照一定的规则分成多个...

    存储过程的学习提高编写存储过程的能力

    在上述例子中,`upGetUserName`是存储过程的名称,`@intUserId`和`@ostrUserName`是参数,`@ostrUserName`使用`OUTPUT`关键字表示其是一个输出参数,意味着在存储过程执行后,可以将结果传递回调用者。 存储过程的...

    存储过程的一个简单例子

    存储过程的一个简单例子 适用的啊 很简单容易理解

    ORACLE存储过程实现添加、修改、删除、查询

    在Oracle数据库环境中,存储过程是一种预编译的代码块,用于执行特定的数据库操作,如数据的添加、修改、删除和查询。它们提供了一种高效且安全的方式来处理数据,同时还可以减少网络流量并提高应用程序的性能。下面...

    MySQL存储过程综述及如何使用Navicat创建存储过程

      在大型项目中,有时候需要重复执行能够完成特定功能的SQL语句集,而MySQL为我们提供了存储过程的概念,存储过程是数据库中的一个重要对象,它是存储在数据库中的一组完成特定功能的SQL语句集。它第一次编译后,...

    这是给初学者写存储过程的实例

    本文将通过一个具体的示例来详细介绍如何为初学者编写简单的存储过程。 #### 二、存储过程概念回顾 存储过程是预编译的一组SQL语句集合,它可以存储在数据库中,并作为一个单独的对象来调用执行。与普通的SQL查询...

    存储过程(循环插入数据)

    在数据库管理领域,存储过程是预编译的SQL语句集合,它们被封装在一个单一的逻辑单元中,便于管理和重复使用。在Oracle数据库系统中,存储过程是强大的工具,能够执行复杂的业务逻辑和数据处理任务。本文将深入探讨...

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    存储过程自动生成工具

    2、 让不会写存储过程的测试人员,也可顺利完成加压测试工作。 3、 让会写存储过程的测试人员,短时间内完成存储过程编写。 4、 可生成现行业主流的不同数据库类型的存储过程。 5、 添加的数据符合项目真实客户环境...

    oracle存储过程编写

    在Oracle中,存储过程是由一个或多个SQL语句和PL/SQL块组成的,可以被封装起来并进行重用,提高了代码的可维护性和效率。以下是对"Oracle存储过程编写"的详细讲解。 一、存储过程的基本概念 1. 存储过程:存储在...

    存储过程写的增删改查

    存储过程是数据库管理中的一个重要工具,它允许程序员和数据库管理员预先定义并编译一系列的SQL语句,形成一个可重复使用的、高效的代码块。在"存储过程写的增删改查"这个主题中,我们将深入探讨如何利用存储过程来...

    项目里用到用java写oracle的存储过程,做个备份

    在上述代码中,我们建立了一个到Oracle数据库的连接,然后创建一个`CallableStatement`对象,设置参数并执行存储过程。注意,这里的`{ call BACKUP_DATABASE(?)}`是调用存储过程的语法格式,`?`代表一个参数,通过`...

    oracle的存储过程学习资料

    Oracle的存储过程是数据库管理中的一个重要概念,它是一组为了完成特定功能的SQL语句集,可以被命名、保存并在需要时调用。这组学习资料涵盖了存储过程的基础操作和进阶知识,对于想要深入理解Oracle数据库管理和...

Global site tag (gtag.js) - Google Analytics