同一台数据库服务器上两个不同的数据库可以通过共享来实现数据共享。两台不同的数据库服务器无法通过这种方法来实现数据共享,这个时候可以使用database links 。创建全局database links ,则必须使用systm或sys用户,在database前加public
1.两种方式创建
1.1 已经配置本地服务
CREATE DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码USING '本地配置的数据的实例名' ;
1.2 未配置本地服务
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fjept)
)
)' ;
两种方法配置dblink是差不多的,第二种方法不受本地配置的数据的实例名的影响。
2 查询远程数据库的数据
SELECT …… FROM 表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。
Job
创建测试表
SQL> create table TEST(a date);
表已创建。
创建一个自定义过程
SQL> create or replace procedure MYPROC as
2begin
3insert into TEST values(sysdate);
4end;
5/
过程已创建。
创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
3end;
4/
PL/SQL 过程已成功完成。
运行JOB
SQL> begin
2dbms_job.run(:job1);
3end;
4/
PL/SQL 过程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间from TEST;
时间
-------------------
2001/01/07 23:51:21oracle游标的使用
2001/01/07 23:52:22
2001/01/07 23:53:24
删除JOB
SQL> begin
ve(:job1);
3end;
4/
存储过程
1、创建存储过程
create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名变量类型)
begin
--存储过程的执行体
end test;
打印出输入的时间信息
E.g:
create or replace procedure test(workDate in Date) is begin
dbms_output.putline('The input date
is:'||to_date(workDate,'yyyy-mm-dd')); end test;
2、变量赋值
变量名:= 值;
E.g:
create or replace procedure test(workDate in Date) is
x number(4,2);
begin
x := 1;
end test;
3、判断语句:
if 比较式then begin end; end if;
E.g
create or replace procedure test(x in number) is
begin
if x >0 then
begin
x := 0 - x;
end;
end if;
if x = 0 then
begin
x: = 1;
end;
end if;
end test;
4、For 循环
For ... in ... LOOP
--执行语句
end LOOP;
(1)循环遍历游标
create or replace procedure test() as
Cursor cursor is select name from student; name varchar(20); begin
for name in cursor LOOP
begin
dbms_output.putline(name);
end;
end LOOP;
end test;
(2)循环遍历数组
create or replace procedure test(varArray in myPackage.TestArray) as
--(输入参数varArray 是自定义的数组类型,定义方式见标题6)
i number;
begin
i := 1;  --存储过程数组是起始位置是从1开始的,与java、C、C++等语言不同。因为在Oracle中本是没有数组的概念的,数组其实就是一张
--表(Table),每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历
for i in 1..unt LOOP
dbms_output.putline('The No.'|| i || 'record in varArray
is:'||varArray(i));
end LOOP;
end test;
5、While 循环
while 条件语句LOOP

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。