`
forlab
  • 浏览: 130587 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

procedure插入数据实例

 
阅读更多

1、创建表

  CREATE TABLE user_info
  (
  id VARCHAR2(4),
  name VARCHAR2(15),
     pwd VARCHAR2(15),
  address VARCHAR2(30)
  );

 

2、创建存储过程

CREATE OR REPLACE PROCEDURE AddNewUser(n_id USER_INFO.id%TYPE,n_name user_info.name%TYPE,n_pwd user_info.pwd%TYPE,n_address user_info.address%TYPE)
IS
BEGIN
INSERT INTO user_info(id,name,pwd,address)
VALUES(n_id,n_name,n_pwd,n_address);
END AddNewUser;

 

3、调用存储过程

PL/SQL procedure successfully completed
 
SQL> set serveroutput on
SQL> 
SQL> DECLARE
  2  v_id user_info.id%TYPE := 'u002';
  3  v_name user_info.name%TYPE := 'wish';
  4  v_pwd user_info.pwd%TYPE := 'history';
  5  v_add user_info.address%TYPE := 'shanghai';
  6  BEGIN
  7  AddNewUser(v_id,v_name,v_pwd,v_add);
  8  DBMS_OUTPUT.PUT_LINE('用户 ' || v_name || ' 已经成功插入');
  9  END;
 10  /
 
用户 wish 已经成功插入
 
PL/SQL procedure successfully completed

 或者

DECLARE
v_id user_info.id%TYPE := 'u002';
v_name user_info.name%TYPE := 'wish';
v_pwd user_info.pwd%TYPE := 'history';
v_add user_info.address%TYPE := 'shanghai';
BEGIN
AddNewUser(v_id,v_name,v_pwd,v_add);
DBMS_OUTPUT.PUT_LINE('用户 ' || v_name || ' 已经成功插入');
END;

 

4、程序中调用存储过程

我们在程序中(或者 sql 可以出现的任何地方),使用 sql 调用我们刚写好的存储过程:

  --利用EXEC()直接插入

  EXEC AddNewUser('u003','jian','jian','beijing');

  --或

  EXECUTE AddNewUser('u004','zhang','zhang','beijing');

  完毕。

 

细心地读者会发现:存储过程不就是对 sql 语句的封装么?有了 AddNewUser 这个存储过程,每次插入的时候我们不用写 sql 语句 insert ... 了。

  很对,存储过程本质上就是对业务关系复杂的 sql 语句的封装。sql 语句以程序块的形式被封装在了数据库中了。写好了以后,无论是 java,还是 .net ,抑或其他开发语言,可以像使用 sql 语句那样随意调用。这就是数据库开发。

  另外,过程与函数的差别:函数与过程有很多相似的地方,但也有一些差别,其中的一点就是,过程的参数可以有三种模式(IN、OUT、IN OUT),而函数只有一种(IN),因为使用函数的目的是传入0或多个参数,返回单一的值,想让函数返回多个值是一种不良的编程习惯,我们应该加以改正。

 

分享到:
评论

相关推荐

    PostgreSQL中调用存储过程并返回数据集实例

    主要介绍了PostgreSQL中调用存储过程并返回数据集实例,本文给出一创建数据表、插入测试数据、创建存储过程、调用创建存储过程和运行效果完整例子,需要的朋友可以参考下

    Mysql存储过程中游标的用法实例

    DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE DEFINER=`root`@`%` PROCEDURE `批量插入商户路由关联数据`() BEGIN DECLARE v_partner_no VARCHAR(32); DECLARE v_partner_id INT(11); DECLARE ...

    Powerbuilder9.0实用教程源代码

    4.2.5 使用Stored Procedure选择数据源 128 4.3 编辑数据窗口 129 4.3.1 数据窗口的几个区域 129 4.3.2 向数据窗口中添加界面元素 129 4.3.3 设置数据字段属性 130 4.4 连接数据窗口 132 4.4.1 向窗体添加数据...

    sqlserver 存储过程中If Else的用法实例

    现在要通过编程向B表中插入数据,可是在程序中是不允许给Int类型赋空值的如果不赋值就默认为0。为了解决这个问题,用到了存储过程的If Else,下面是完整的存储过程。 代码示例: 代码如下:create PROCEDURE [dbo].[P...

    MySQL 5.1中文手冊

    14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面...

    精通SQL 结构化查询语言详解

    11.2.1 由VALUES关键字引入多行数据插入  11.2.2 使用SELECT语句插入值 11.3 表中数据的复制  11.3.1 基本语法  11.3.2 应用实例  11.4 从外部数据源导入、导出数据  11.4.1 Access数据库数据的导出  ...

    精通SQL--结构化查询语言详解

    11.2.1 由values关键字引入多行数据插入 217 11.2.2 使用select语句插入值 217 11.3 表中数据的复制 220 11.3.1 基本语法 221 11.3.2 应用实例 221 11.4 从外部数据源导入、导出数据 222 11.4.1 access数据库...

    oracle数据库笔记

    实例的进程结构(实例=SGA + 后台进程) 20 1.DBWR (数据库写入进程) 21 2.LGWR(日志写入进程) 22 3.ARCH(归档进程)-可选进程 22 4.CKPT(检查点进程)-可选进程 22 5.SMON (系统监控进程) 22 6.PMON (进程...

    SAP屠夫作品汇总

    Vendor的AP和Customer的AR能被对清,需要在Vendor和customer主数据设置一下, 189 如图7-[2],在vendor的control页的Account control的Customer填上Customer name 80005803. 189 如图8-[2],在payment transaction ...

    MYSQL中文手册

    5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建用户账户 5.2.3. MySQL实例管理器命令行选项 5.2.4. MySQL实例管理器配置文件 5.2.5. MySQL实例管理器识别的命令 5.3. mysqld:...

    SQL必知必会(第3版)--详细书签版

    第15章 插入数据 95 15.1 数据插入 95 15.1.1 插入完整的行 95 15.1.2 插入部分行 98 15.1.3 插入检索出的数据 99 15.2 从一个表复制到另一个表 100 15.3 小结 101 第16章 更新和删除数据 102 16.1 更新...

    SQL必知必会(第3版-PDF清晰版)part1

    第15章 插入数据...... 95 15.1 数据插入..... 95 15.1.1 插入完整的行..... 95 15.1.2 插入部分行..... 98 15.1.3 插入检索出 的数据..... 99 15.2 从一个表复制到 另一个表..... 100 15.3 小结..... 101 第16章 ...

    Oracle 10g 开发与管理

    2.向表中插入空值 40 3.从其它表中拷贝数据 40 二. 更新数据 41 三. 删除数据 42 1.Delete 语句 42 2.Truncate 语句 42 四. SQL*Plus命令 42 1.设置环境变量命令 42 (1)Pause 43 (2)pagesize 和 newpage 43 ...

    sql总结.doc

    通过ROWCOUNT查看游标指向的行:(隐式游标实例) 例: DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count from dept; --返回一个隐式游标 dbms_output.put_line('SQL%ROWCOUNT = '||SQL%COUNT); END; / ...

    oracle实验报告

    3、对复制的emp表插入一行只包含有职工号,职工名,工资与部门号四个数据 项值的记录。 4、在复制的emp表中将雇员ALLEN提升为经理,工资增至$2500, 奖(佣 )金增加40%。 5、删除复制的emp表中工资低于500的记录行。...

    SQL语法大全

    Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。 ActiveConnection Recordset对象可以通过...

    MySQL 5.1参考手册 (中文版)

    14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面...

    mysql官方中文参考手册

    14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面...

    MySQL 5.1参考手册中文版

    5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建用户账户 5.2.3. MySQL实例管理器命令行选项 5.2.4. MySQL实例管理器配置文件 5.2.5. MySQL实例管理器识别的命令 5.3. mysqld:...

    MySQL 5.1参考手册

    14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面...

Global site tag (gtag.js) - Google Analytics