前事不忘,后事之师,不忘国耻!

 注册  找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2241|回复: 0

ORACLE的基本语法集锦

[复制链接]

ORACLE的基本语法集锦

[复制链接]
ehxz

主题

0

回帖

7251

积分

管理员

积分
7251
2007-7-13 09:20:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
-- 表
create table test (names varchar2(12),
          dates date,
          num  int,
          dou  double);
-- 视图
create or replace view vi_test as
select * from test;
-- 同义词
create or replace synonym aa
for dbusrcard001.aa;
-- 存储过程
create or replace produce dd(v_id in employee.empoy_id%type)
as
begin
  
end
dd;
-- 函数
create or replace function ee(v_id in employee%rowtype) return varchar(15)
is
var_test varchar2(15);
begin
return var_test;
exception when others then
  
end
-- 三种触发器的定义
create or replace trigger ff
alter delete
on test
for each row
declare
begin
  delete from test;
  if sql%rowcount < 0 or sql%rowcount is null then
   rais_replaction_err(-20004,"错误")
  end if
end

create or replace trigger gg
alter insert
on test
for each row
declare
begin
  if :old.names = :new.names then
   raise_replaction_err(-2003,"编码重复");
  end if
end

create or replace trigger hh
for update
on test
for each row
declare
begin
if updating then
   if :old.names <> :new.names then
reaise_replaction_err(-2002,"关键字不能修改")
   end if
end if
end
-- 定义游标
declare
  cursor aa is
   select names,num from test;
begin
  for bb in aa
  loop
    if bb.names = "ORACLE" then
   
    end if
  end loop;
  
end
-- 速度优化,前一语句不后一语句的速度快几十倍
select names,dates
from test,b
where test.names = b.names(+) and
   b.names is null and
   b.dates > date(&#39;2003-01-01&#39;,&#39;yyyy-mm-dd&#39;)

select names,dates
from test
where names not in ( select names
            from b
           where dates > to_date(&#39;2003-01-01&#39;,&#39;yyyy-mm-dd&#39;))
            
-- 查找重复记录
select names,num
from test
where rowid != (select max(rowid)
         from test b
        where b.names = test.names and
           b.num = test.num)

-- 查找表TEST中时间最新的前10条记录
select * from (select * from test order by dates desc) where rownum < 11
-- 序列号的产生
create sequence row_id
minvalue 1
maxvalue 9999999999999999999999
start with 1
increment by 1
insert into test values(row_id.nextval,....)
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2024-11-23 00:45 , Processed in 0.056780 second(s), 11 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表