学习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;
分享到:
相关推荐
以下是对标题“经典SQL语句—练习”和描述中涉及的一些基本知识点的详细说明: 1. **创建数据库**:使用`CREATE DATABASE`语句可以创建一个新的数据库,例如`CREATE DATABASE database-name`,这里的`database-name...
数据库恢复是指从备份中恢复整个数据库,以便恢复数据库中的所有数据。数据库恢复可以使用 mysqldump 命令和 mysql 命令来实现。 知识点8: 删除数据恢复 删除数据恢复是指从备份中恢复删除的数据,以便恢复数据库...
在本Java课堂练习备份工程中,我们可以看到一系列的项目文件,这些文件反映了学习者或教师在教授和掌握Java编程语言时所进行的各种实践操作。这个压缩包包含的子文件夹和程序代表了不同阶段的学习成果或者特定主题的...
2. 插入练习:使用INSERT INTO语句向表中添加新记录。 3. 更新练习:使用UPDATE语句修改现有记录。 4. 删除练习:使用DELETE语句从表中移除不需要的记录。 5. DDL练习:创建(CREATE)、修改(ALTER)和删除(DROP)...
本练习聚焦于如何对名为"myschool"的数据库进行备份和恢复,这对于学校管理系统尤为重要,因为它可能存储着大量的学生信息、课程数据以及成绩记录。 首先,让我们了解MySQL的备份方法。最常用的是使用`mysqldump`...
数据备份是指将数据库中的数据复制一份或多份到其他存储设备上,以便在数据丢失、损坏或者错误操作等情况下能够从备份中恢复数据。数据恢复则是指将备份的数据重新导入到数据库中,以修复数据丢失或损坏等问题。 ##...
这个"Se简单的练习Demo备份"很可能是某个开发者为了保存其在学习或实践中创建的Java SE示例代码而创建的压缩包。Java SE包含了Java编程语言、Java虚拟机(JVM)、类库以及开发工具等关键组件,使得开发者能够编写、...
使用`INSERT INTO`语句向表中添加新记录: ```sql INSERT INTO users (name, age, address) VALUES ('张三', 25, '北京市海淀区'); ``` 5. **查询数据** `SELECT`语句用于检索表中的数据。基础查询可以这样写...
本实验旨在练习数据库备份与恢复的操作方法,使用 MySQL 官方提供的实例 employees 数据库,下载地址为 https://launchpad.net/test-db/employees-db-1/1.0.6。 Knowledge Point 1:使用select…into…outfile语句...
Java学习日志(二十九)SQL查询语句简单查询语句条件查询语句排序查询语句聚合查询语句分组查询分页查询SQL备份与恢复 SQL查询语句 创建以下表,方便查询练习 CREATE DATABASE day02; USE day02; #创建商品表: ...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,对于初学者来说,掌握其基本概念、SQL语法和...同时,解决练习题的过程中,也能够培养解决问题的能力和独立思考的习惯,为日后的数据库管理工作打下坚实基础。
本资源包"sql语句学习大全"显然是一个面向初学者和进阶者的学习资料集合,包括PDF文档和练习题及答案,旨在帮助用户全面掌握SQL知识。 1. **SQL基础**:SQL的基础包括数据定义(DDL,Data Definition Language),...
在SQL Server 2008数据库实例练习中,你可以深入理解和掌握关系型数据库管理系统的操作。这个练习案例是一个学生成绩管理系统,它包含了用于教学目的的表,让你有机会实践SQL语句,包括查询(SELECT)、更新(UPDATE...
上机练习6可能涵盖以下内容:插入数据到表中(INSERT INTO语句)、查询数据(SELECT语句)、更新数据(UPDATE语句)和删除数据(DELETE语句)。这些基本操作是数据库管理员日常工作中最常用的功能。 四、索引与性能...
1. **建立完全备份**:通过SQL语句或企业管理器完成数据库的完全备份。 ```sql USE testdb; BACKUP DATABASE TESTDB TO DISK = 'c:\testdbdata.bak'; ``` 2. **查看备份文件信息**:可以通过`RESTORE ...
* 数据插入:使用INSERT INTO语句插入数据到四个数据表中。 四、SQL语句 * CREATE DATABASE语句:用于创建数据库。 * USE语句:用于打开数据库。 * CREATE TABLE语句:用于创建数据表。 * INSERT INTO语句:用于...
使用`INSERT INTO`语句可以向表中添加新的记录,而`UPDATE`语句则用于修改现有记录的值。这两种操作都需要确保数据类型与表中的列定义相匹配,并可能需要考虑并发控制和事务管理。 4. **表的创建与修改** `CREATE...
1. SQL基础:练习题可能会涵盖基本的SQL语法,如SELECT语句用于数据查询,INSERT、UPDATE和DELETE语句用于数据操作。这包括对单表、多表的查询,子查询的使用,连接(JOIN)操作,以及聚合函数(如COUNT、SUM、AVG、...
在实验 6-7 中,我们使用 SELECT 语句将数据导出到文件中,並使用 CHARACTER SET 语句解决中文字符乱码问题。在实验 6-8 中,我们使用 LOAD DATA 语句将数据导入到数据库中。 四、数据库维护 * 数据库优化:对...