`

练习中的语句 备份

阅读更多

学习Oracle中练习的sql记录,方便日后用:

--创建一个块
declare
v_name varchar2(20);
v_pwd  varchar2(20);
begin
select name into v_name,password into v_pwd from mytest where id=&id;
end;

--创建一个输出块
declare
v_name varchar2(30);
begin
select name into v_name from mytest where id=&id;
dbms_output.put_line('用户的名字是:'||v_name);
end;

--创建一个多字段输出块
declare
v_name varchar2(30);
v_pass varchar2(30);
begin
select name,password into v_name,v_pass from mytest where id=&id;
dbms_output.put_line('姓名:'||v_name||' '||v_pass);
end;

--创建一个例外
declare
v_name varchar2(30);
v_pass varchar2(30);
begin
select name,password into v_name,v_pass from mytest where id=&id;
dbms_output.put_line('姓名:'||v_name||' '||v_pass);
exception
when no_data_found then
dbms_output.put_line('not found values');
end;

--创建一个传入过程
create or replace procedure sp_prol2(spname varchar2,sid number) is
begin
update mytest set name = spname where id=sid;
end;

--创建一个带有返回值的参数
create  function  fun_count1(fname varchar2)
return number is
fcount number(5);
begin
select id*12 into fcount from mytest where name=fname;
return fcount;
end;

--创建一个包
create package sp_package is
procedure sp_update(sname varchar2,sid number);
function f_select(sname varchar2) return number;
end;

--创建包体
create or replace package body sp_package is
procedure sp_update(sname varchar2,sid number)
is
begin
 update mytest set name=sname where id = sid;
end;
function f_select(sname varchar2) return number 
is
fcount number;
begin
 select id*12 into fcount from mytest where name=sname;
 return fcount;
end;
end;

--标量案例
v_ename varchar2(10);
v_sal number(6,2);
v_sal number(6,2):=5.3;
v_date date;
v_bool boolean not null default false;

--案例
declare
 c_tax_rate number(3,2):=0.03;
 v_ename varchar2(10);
 v_sal number(7,2);
 v_tax_sal number(7,2);
begin
 select name,sal into v_ename,v_sal from mytest where id=&id;
 v_tax_sal:=v_sal*c_tax_rate;
 dbms_output.put_line(v_tax_sal);
end;

declare
c_tax_rate number(3,2) := 0.03;
v_name mytest.name%type;
v_sal mytest.sal%type;
v_tax_rate number(7,2);
begin
select sal into v_sal from mytest where id=&id;
v_tax_rate := c_tax_rate * v_sal;
dbms_output.put_line(v_tax_rate);
end;

--复合类型

--案例
declare
type emp_record_type is record(name mytest.name%type,sal mytest.sal%type,id mytest.id%type);
sp_record emp_record_type;
begin
 select name,sal,id into sp_record from mytest where id = 1;
 dbms_output.put_line(sp_record.name);
end;

--(问题????)
declare
 mytest.name%type 
 type sp_table_type is 
 table of mytest.name%type index by binary_integer;
 sp_table sp_table_type;
begin
 select name into sp_table(0) from mytest where id = 1;
 dbms_output.put_line(sptable(0));
end;


--游标  案例
--1
declare 
v_name mytest.name%type;
v_sal mytest.sal%type;
begin
 select name,sal into v_name,v_sal from mytest where id = &no;
 dbms_output.put_line(v_name||v_sal);
end;
--2
declare
 type sp_mytest_cursor is ref cursor;
 test_cursor sp_mytest_cursor;
 v_name mytest.name%type;
 v_sal mytest.sal%type;
 begin
  open test_cursor for select name,sal from mytest;
  loop
   fetch test_cursor into v_name,v_sal;
   exit when test_cursor%notfound;
   dbms_output.put_line(v_name||v_sal);
   end loop;
 end;
 
 --创建过程 if
 create or replace procedure update_test_sal(v_name varchar2) is
 v_sal mytest.sal%type;
 begin
  select sal into v_sal from mytest where name = v_name;
  if v_sal < 100 then
   update mytest set sal=sal + 10 where name = v_name;
  else 
   update mytest set sal=sal - 10 where name = v_name;
  end if;
 end;
 
 
create or replace procedure update_test_sal(v_name varchar2) is
 v_sal mytest.sal%type;
begin
 select sal into v_sal from mytest where name = v_name;
 if v_sal = 100 then
  update mytest set sal=sal + 10 where name = v_name;
 elsif v_sal = 90 then
  update mytest set sal=sal + 10 where name =v_name;
 else
  update mytest set sal=sal-10 where name = v_name;
 end if;
end;


--- loop
create or replace procedure add_test1_info(v_name varchar2) is
v_id number := 1;
begin
 loop
   insert into test1 values(v_id,v_name);
   exit when v_id = 10;
   v_id := v_id + 1;
 end loop;
end;


create or replace procedure add_test1_info(v_name varchar2) is
v_id number := 11;
begin
 while v_id <= 20 loop
  insert into test1 values(v_id,v_name);
  v_id := v_id + 1;
 end loop;
end;


create or replace procedure add_test1_info(v_name varchar2) is
c_end number := 40;
v_id number := 31;
begin
 for  i in reverse v_id .. c_end loop
  insert into test1 values(i,v_name);
 end loop;
end;


create or replace procedure add_book(v_id number,v_name varchar2,v_bilu varchar2) is
begin
 insert into book values(v_id,v_name,v_bilu);
end;


create or replace procedure out_book(v_id in number,v_name out varchar2) is
begin
 select bookname into v_name from book where bookid = v_id;
end;

--返回结果集的过程
--1.创建一个包,在包中创建一个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;

create or replace procedure rs_book_info(v_id in number,test_cursor out testpackage.test_cursor) is
begin
 open test_cursor for select * from book where bookid = v_id ;
end rs_book_info;


--创建分页
select * from (select rownum rn,t1.* from (select * from book) t1 where rownum < 10) where rn > 6

create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;

create or replace procedure page_book(
 tableName in varchar2, 
 PageSizes in number, 
 pageNow in number, 
 myrows out number, 
 mypagecount out number, 
 p_cursor out testpackage.test_cursor) is
v_sql varchar2(1000);
v_begin number:= (pageNow-1) * Pagesizes + 1;
v_end number:= pageNow * Pagesizes;
begin
 v_sql:='select * from (select rownum rn,t1.* from (select * from '||tableName||') t1 where rownum <= '||v_end||') where rn >= '||v_begin;
 open p_cursor for v_sql;
 v_sql:='select count(*) from '||tableName;
 execute immediate v_sql into myrows;
 if mod(myrows,Pagesizes) = 0 then
  mypagecount :=myrows/pagesizes;
 else
   mypagecount :=myrows/pagesizes + 1;
 end if;
end;

 

分享到:
评论

相关推荐

    Java学习日志(二十九): SQL查询语句,SQL备份与恢复

    Java学习日志(二十九)SQL查询语句简单查询语句条件查询语句排序查询语句聚合查询语句分组查询分页查询SQL备份与恢复 SQL查询语句 创建以下表,方便查询练习 CREATE DATABASE day02; USE day02; #创建商品表: ...

    sql2000学生管理数据库

    这是个备份的数据库,用于练习SQL语句,在SQL2000中恢复该数据库就可以使用里面的数据了,注意恢复时在选项里要更改一下恢复的路径,还要更改恢复后的数据库的名字,里面有三张表student,course,SC

    王之王高尔夫练习场管理软件

    主要功能包括软件注册、用户管理、用户授权、角色设置、角色授权、系统初始化、重新登录、更改密码、参数设置、界面风格、执行sql语句、我的输入法设置、强行删除数据、操作日志查询、数据备份、数据恢复、账单删除 ...

    【VBA(七):事件与典型应用案例】【关于单元格格式设置中的WITH语句+事件与典型应用案例+小结与练习】

    文章目录关于单元格格式设置中的WITH语句事件与典型应用案例选中单元格的该行有填充色自动筛选自动更新自动备份小结与练习概念工作表事件工作簿事件 关于单元格格式设置中的WITH语句 with的作用就是简化代码,让代码...

    2023年经典mysql面试题

    以下是关于MySQL面试的注意事项: ...5. 练习SQL的编写和调试:在面试中,招聘者可能会让应聘者写一些SQL语句或者调试一些SQL语句。应聘者需要准备好自己的SQL编写和调试能力,注重代码的规范性。

    中博科创ORACLE培训资料.rar

    教学内容 JAVA项目练习(在项目中如何使用分区,索引,存储过程,备份,举例说明优化如何在项目使用) 时间 第五天 备份 上午(9:00至11:00) 下午(2:00至5:30) 晚上(6:30至8:30) 职责 ...

    review_emp_dept_salgrade.sql

    此文件是自己在复习MySQL时的Demo表数据,上传至此,纯属备份作用,无任何实用价值,请勿下载,以免浪费您的积分。若有读者比照我的笔记练习MySQL语句时,可以下载此Demo数据作以练习,文章中标明了链接地址。

    Oracle 10g 开发与管理

    7.3 PL/SQL 块中的SQL 语句 58 7.4 使用%TYPE和%ROWTYPE类型的变量 58 1.%Type 59 2.%RowType 59 7.5 复合变量 60 1.记录类型(“行”) 60 2.记录表类型(“表” ) 60 (1)使用的原因: 60 (2)定义记录表类型...

    4天oracle快速入门_Java进阶数据库视频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程介绍课程目录课程评论 学习目标 (1)对Oracle的体系结构有一个清晰的...(8)能够完成Oracle数据库的备份和还原操作

    21天学会SQL

    SQL Server 2008是微软的SQL Server数据库中的最新版本,在该版本的数据库产品中融入了更多商业智能的内容。本书中也使用了一篇专门讲解了与商业智能有关的一些内容。 本书总分为5篇,共21章。第一篇主要讲解数据库...

    MySQL学习笔记1-数据库基础.md

    本文首先介绍了数据库的基本概念,然后重点概述了SQL语言的各种操作语句,包括查询、排序、连接、聚合函数等,并给出了示例代码。然后讲解了数据库设计的相关知识。最后介绍了数据库的备份、恢复方法,以及使用实例说明...

    student.sql

    该资源是关于student信息的数据备份文件,用户可以通过该备份文件将数据恢复到本地的数据库中,方便后续sql语句的练习

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    7.2.4 从冷备份中恢复 7.2.5 从热备份中恢复 7.2.6 恢复的7个步骤 7.2.7 用备份控制文件进行恢复 7.3 编写数据库备份脚本 7.4 备份归档重做日志 7.5 Oracle Data Pump简介 …… 第8章 高可用性:RAC、ASM和Data ...

    Perl 实例精解(第三版).pdf

    练习18 在Oracle中执行persons.p1 15.7 参考文献 第16章 与系统接口 16.1 系统调用 16.1.1 目录和文件 16.1.2 目录和文件属性 16.1.3 查找目录和文件 16.1.4 创建目录--mkdir函数 16.1.5 删除...

Global site tag (gtag.js) - Google Analytics