注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lable

........................................

 
 
 

日志

 
 

7_PL/SQL练习题  

2011-12-19 11:28:15|  分类: Hibernate |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

--**************************************************************--
--****** 一    编写过程实现向数据库表中插入数据   ***********--
--**************************************************************--
--创建车辆信息表
create table store_car(
    id number(10) primary key,
    model varchar2(20),
    enqineSize varchar2(10),
    price number(10),
    dateOfShiPment date,
    frameNumber varchar2(15)
);

--创建过程向车辆信息表中添加信息
create or replace procedure p_add_car
    (id in number,
    model in varchar2,
    enqineSize in varchar2,
    price in number,
    dateOfShiPment in date,
    framNumber varchar2)
as
    v_num number(2);
begin
    insert into store_car values (id,model,enqineSize,price,dateOfShiPment,framNumber);
    v_num := sql%rowcount;
    dbms_output.put_line('影响行数:' || v_num);
end;

--调用该过程
begin
    p_add_car(1,'轿车','100',200000,sysdate,'AA001');
end;


--**************************************************************--
--******二    编写函数实现向数据库表中插入数据   ***********--
--**************************************************************--
--创建函数项车辆信息表中添加信息
create or replace function f_add_car
    (id in number,
    model in varchar2,
    enqineSize in varchar2,
    price in number,
    dateOfShiPment in date,
    framNumber in varchar2)
    return number
as
    f_count number;
begin
    insert into store_car values (id,model,enqineSize,price,dateOfShiPment,framNumber);
    f_count := sql%rowcount;  --返回受影响行数
    return f_count;
    commit;
end;

--调用函数
declare
    v_count number;
begin
    v_count := f_add_car(2,'Jeep','200',300000,sysdate,'AA002');  --接受函数返回的值
    dbms_output.put_line('影响行数:' || v_count);
end;


--**************************************************************--
--******三    编写一个包并进行调用               ***********--
--**************************************************************--
--创建包头
create or replace package package_add_car as
    procedure pro_add_car
    (id in number,
    model in varchar2,
    enqineSize in varchar2,
    price in number,
    dateOfShiPment in date,
    framNumber varchar2);

    function fun_add_car
    (id in number,
    model in varchar2,
    enqineSize in varchar2,
    price in number,
    dateOfShiPment in date,
    framNumber in varchar2)
    return number;
end package_add_car;

--创建包体
create or replace package body package_add_car as
    procedure pro_add_car
    (id in number,
    model in varchar2,
    enqineSize in varchar2,
    price in number,
    dateOfShiPment in date,
    framNumber varchar2)
    is
         v_num number(2);
    begin
        insert into store_car values (id,model,enqineSize,price,dateOfShiPment,framNumber);
        v_num := sql%rowcount;
        dbms_output.put_line('包的影响行数:' || v_num);
    end pro_add_car;

    function fun_add_car
    (id in number,
    model in varchar2,
    enqineSize in varchar2,
    price in number,
    dateOfShiPment in date,
    framNumber in varchar2)
    return number
    is
        f_count number;
    begin
        insert into store_car values (id,model,enqineSize,price,dateOfShiPment,framNumber);
        f_count := sql%rowcount;  --返回受影响行数
        return f_count;
        commit;
    end fun_add_car;
end package_add_car;

--包的调用
declare
    v_count number;
begin
    package_add_car.pro_add_car(3,'轿车','300',250000,sysdate,'AA003');
    v_count := package_add_car.fun_add_car(4,'越野车','400',500000,sysdate,'AA004');
    dbms_output.put_line('函数的影响行数:' || v_count);
end;

--**************************************************************--
--******四    通过视图查询商品表中的记录         ***********--
--**************************************************************--
--创建商品表
create table product(
    pid number primary key,
    name varchar2(20),
    address varchar2(20),
    price number(8,2),
    sid number
);
--创建供应商表
create table supplier(
    sid number primary key,
    info number
);

insert into product values (1,'联想电脑','北京中关村',4000,1);
insert into product values (2,'音响','北京中关村',200,1);
commit;

insert into supplier values (1,10001);
commit;

--创建一个视图显示出所有商品信息及其供应商名称
create or replace view v_product
as select p.pid,p.name,p.address,p.price,s.info from product p,supplier s where p.sid=s.sid;

--从视图中检索数据
select * from v_product;

 

--**************************************************************--
--******    五     序列的应用                    ***********--
--**************************************************************--
--创建商品表的序列,设置序列的最小值、最大值、起始值和递增值
create sequence seq_product
    minvalue 3
    maxvalue 1000
    start with 3
    increment by 1
    cache 20;
--查看未生成新序列之前的id
select pid from product;
--调用序列
insert into product (pid) values (seq_product.nextval);
--查看生成的序列
select pid from product;

 

--**************************************************************--
--******六     使用数据库链实现远程访问数据库    ***********--
--**************************************************************--
alter user scott account unlock;--解锁scott用户
conn scott/tiger;               --使用scott用户登录
                                --登录成功后需要重新设置scott用户的密码

--创建名称为link_test的数据库链
create database link link_test
connect to scott identified by tiger
using '(DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
        (SERVICE_NAME = ORCL)
    )
)';

--访问数据库链即访问服务器是127.0.0.1
select * from dept@link_test;

  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017