问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有oracle存储过程的语句解析例子吗?还有语法大全

发布网友 发布时间:2022-04-30 22:03

我来回答

4个回答

懂视网 时间:2022-05-01 02:24

ORACLE支持五种类型的完整性约束

NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.

CHECK (检查)--检查在约束中指定的条件是否得到了满足.

UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.

PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.

POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.ORACLE支持五种类型的完整性约束

NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.

CHECK (检查)--检查在约束中指定的条件是否得到了满足.

UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.

PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.

POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.

 

 

1--设置每行显示多少字符  set linesize  300;

2 设置每页显示多少条记录 set pagesize 30;

3 用户名的切换: 如 conn system/tiger

Conn sys/change_on_install as sysdba(注意超级用户 在后面加as sysdba)

4 在超级用户下查找普通用户的表是查不到的 必须这样查找  如 select * from scott.emp(普通用户下的emp表)

5 查看当前是那个用户身份登录: show user;

6 查看有多少张表: select * from tab;(注意不同用户下的表是不同的)

7查看表的结构: desc emp(emp为表名)

8 取出重复的列(DISTINCT): 如 SELECT DISTINCT  JOB EMP(去掉job的重复的值)

9字符串的链接操作用:  ||

10 查询有奖金的员工: select* from emp where comm is not null;

11 查询没有奖金的员工信息: select * from emp where comm is null;

12 两个条件以上就得用and 如查询工资大雨1500和有奖金的员工 select * from emp where                                                                                                            sal>1500  and comm is not null;

13 表示两个条件有一个满足就可就用:or 如查询工资大于1500或者没有奖金的员工信息

Select * from emp where sal>1500 or comm is not null;

14取反可以用not 如 查询员工工资不大于1500和有奖金的员工信息 如:

 Select * from emp where not (sal>1500  or comm is not null);

15 在什么什么之间用between----and----如查询工资在1500和3000之间的员工信息:

Select * from emp  where sal  between 1500 and 3000;

16   查询员工编号是2323, 4555, 2222的员工具体信息: 如

Select * from emp where empno in(2323,4555,2222);

17.l模糊查询  like 一般结合"%"和"_"使用其中%:表示可以匹配任意长度的内容,"_"表示匹配一个长度放入内容  如:  查询员工姓名中第二哥字母是M的员工信息:

Select * from emp where ename LIKE ‘_M%‘;

又如姓名中包含M的员工  Select * from emp where ename LIKE  ‘%M%‘;

18oracle中不等于有两种表示方式"<>"和"!="

19 排序用order by {asc desc}其中asc 是升序排列 如果不写就默认按升序排列desc是按降序排列  排序语句放在sal语句的最后如: 按员工工资进行排序

Select * from emp order by sal asc(升序)

Selecct * from emp order by sal desc(降序)

Select * from emp where deptno=‘10‘ order by sal desc,hiredate asc;(查询部门10的员工工资的升序排列如果工资相等就按员工的入职时间排序)

20.group by 用于对查询的结果进行分组统计: 显示每个部门的平均工资和最高工资  如:

Select avg(sal),max(sal) from emp group by deptno;

 

Having  子句用于限制分组显示结果: 显示平均工资大于2000的的部门号和他的平均工资?

如:select avg(sal), deptno from emp group by deptno having avg(sal)>2000;

2. 单行函数:

1 小写变大写: upper 如 select * from emp where ename=upper(‘smith‘);

讲一个字符串变为小写字母表示 如:  select  lower(‘HELLO WORLD‘) FROM DUAL;

将单词的首字母变大写 用 INITCAP 如: SELECT INITCAP(‘HELLO WORLD‘) FROM DUAL;

2.字符串的操作

  Substr()截取字符串 length()字符串的长度 replace()替换字符串

3数值函数

四舍五入: round();

截断小数位:trunc();

 

一.入门部分

1.    创建表空间
create tablespace schooltbs datafile ‘D:oracledatasourceschooltbs.dbf’ size 10M autoextend on;

2.    删除表空间
drop tablespace schooltbs[including contents and datafiles];

3.    查询表空间基本信息
select *||tablespace_name from DBA_TABLESPACES;

4.    创建用户
create user  lihua
identified by lihua
default tablespace schooltbs
temporary tablespace temp;

5.    更改用户
alter user lihua
identified by 123
default tablespace users;

6.    锁定用户
alter user lihua account lock|unlock;

7.    删除用户
drop user lihua cascade;--删除用户模式

8.    oracle数据库中的角色
connect,dba,select_catalog_role,delete_catalog_role,execute_catalog_role,exp_full_database,imp_full_database,resource

9.    授予连接服务器的角色
grant connect to lihua;

10.授予使用表空间的角色
grant resource to lihua with grant option;--该用户也有授权的权限

11.授予操作表的权限
grant select,insert on user_tbl to scott;--当前用户
grant delete,update on lihua.user_tbl to scott;--系统管理员

12.修改表的结构(alter)

Alter table  表名 add(列的名称,列的类型);

二.SQL查询和SQL函数

1.SQl支持的命令:
数据定义语言(DDL):create,alter,drop
数据操纵语言(DML):insert,delete,update,select
数据控制语言(DCL):grant,revoke
事务控制语言(TCL):commit,savepoint,rollback

2.Oracle数据类型
字符,数值,日期,RAW,LOB
字符型
char:1-2000字节的定长字符
varchar2:1-4000字节的变长字符
long:2GB的变长字符
 注意:一个表中最多可有一列为long型

Long列不能定义唯一约束或主键约束

long列上不能创建索引

过程或存储过程不能接受long类型的参数。

数值型
number:最高精度38位
日期时间型
date:精确到ss
timestamp:秒值精确到小数点后6位

函数
sysdate,systimestamp返回系统当前日期,时间和时区。
更改时间的显示
alter session set nls_date_language=’american’;
alter session set nls_date_format=’yyyy-mm-dd’;

Oracle中的伪列
像一个表列,但没有存储在表中

伪列可以查询,但不能插入、更新和修改它们的值
常用的伪列:rowid和rownum
rowid:表中行的存储地址,可唯一标示数据库中的某一行,可以使用该列快速定位表中的行。
rownum:查询返回结果集中的行的序号,可以使用它来限制查询返回的行数。

3.数据定义语言

用于操作表的命令
create table
alter table
truncate table
drop table

修改表的命令
alter table stu_table rename to stu_tbl;--修改表名
alter table stu_tbl rename column stu_sex to sex;--修改列名
alter table stu_tbl add (stu_age number);--添加新列
alter table stu_tbl drop(sex);--删除列
alter table stu_tbl modify(stu_sex varchar2(2));--更改列的数据类型
alter table stu_tbl add constraint pk_stu_tbl primary key(id);--添加约束

4.数据操纵语言

select,update,delete,insert
利用现有的表创建表
create table stu_tbl_log as select id,stu_name,stu_age from stu_tbl;--
选择无重复的行

select distinct stu_name from stu_tbl;--
插入来自其他表中的记录
insert into stu_tbl_log select id,stu_name,stu_age from stu_tbl;

5.数据控制语言
grant,revoke
6.事务控制语言
commit,savepoint,rollback
7.SQL操作符
算术操作符:L+-*/
比较操作符:L=,!=,<>,>,<,>=,<=,between-and,in,like,is null等
逻辑操作符:Land,or,not
集合操作符:Lunion,union all,intersect,minus
连接操作符:L||
示例中stu_tbl_log中的数据如下:
        ID STU_NAME                STU_AGE

---------- -------------------- ----------

      1000 李华                          20

      1001 accp                         20

      1003 nimda                         3
stu_tbl中的数据如下:
        ID STU_NAME             ST    STU_AGE

---------- -------------------- -- ----------

      1000 李华                  男         20

      1001 accp                 男         20

      1002 admin                男         30
示例:
select (3+2)/2 from dual;--算术操作符,结果:2.5
select * from stu_tbl where stu_age>=20;--比较操作符
select * from stu_tbl where stu_name like ‘%a%‘;--比较操作符:like
select * from stu_tbl where stu_name like ‘a___‘;--比较操作符:like
select * from stu_tbl where stu_age in(20,30);--比较操作符:in
select * from stu_tbl where stu_age between 20 and 30;--比较操作符:between
select stu_name from stu_tbl union all
select stu_name from stu_tbl_log;--集合操作符:union all,测试结果具体如下:
STU_NAME

-----------

李华

accp

admin

李华

accp

nimda

 

已选择6行。
select stu_name from stu_tbl union
select stu_name from stu_tbl_log;--集合操作符:union,测试结果具体如下:
STU_NAME

---------

accp

admin

nimda

李华
select stu_name from stu_tbl intersect
select stu_name from stu_tbl_log;--集合操作符:intersect,测试结具体如下:
STU_NAME

----------

accp

李华
select stu_name from stu_tbl minus
select stu_name from stu_tbl_log;--集合操作符:minus,测试结果如下:
STU_NAME

----------

Admin
从中可以看出:
minus是获取第一张表独有的数据
intersect是获取两张表中都有的数据
union是整合两张表的数据,都有的只显示一次
union all是纯粹的两张表数据整合
select id,stu_name||‘ ‘||stu_sex as name_sex,stu_age
from stu_tbl;--连接操作符||,测试结果具体如下:
        ID NAME_SEX                   STU_AGE

---------- ----------------------- ----------

      1000 李华    男                         20

      1001 accp   男                         20

      1002 admin  男                         30

8.SQL函数
单行函数:从表中查询的每一行只返回一个值,可出现在select子句,where子句中

日期函数

数字函数

字符函数

转换函数:ToChar(),ToDate(),ToNumber()

其他函数:

Nvl(exp1,exp2):表达式一为null时,返回表达式二

Nvl2(exp1,exp2,exp3):表达式一为null时返回表达式三,否则返回表达式二

Nullif(exp1,exp2):两表达式相等时,返回null,否则返回表达式一
分组函数:基于一组行来返回

Avg,Min,Max,Sum,Count

Group by,having
分析函数

Row_number,rank,dense_rank
示例:
select u.user_name,sum(oi.order_num*oi.order_price) as total,row_number() over (order by sum(oi.order_num*oi.order_price) desc) as sort from order_item_tbl

  oi,user_tbl  u,order_tbl  o where oi.order_id = o.id and o.user_id = u.id group by u.user_name;

 

三.锁和数据库对象

1.锁:数据库用来控制共享资源并发访问的机制。
锁的类型:行级锁,表级锁
行级锁:对正在被修改的行进行锁定。行级锁也被称之为排他锁。
在使用下列语句时,Oracle会自动应用行级锁:
insert,update,delete,select…… for update
select……for update允许用户一次锁定多条记录进行更新。
使用commit or rollback释放锁。
表级锁:
lock table user_tbl in mode mode;
表级锁类型:
行共享 row share
行排他 row exclusive
共享 share
共享行排他 share row exclusive
排他 exclusive
死锁:两个或两个以上的事务相互等待对方释放资源,从而形成死锁
2.数据库对象
oracle数据库对象又称模式对象
数据库对象是逻辑结构的集合,最基本的数据库对象是表
数据库对象:

表,序列,视图,索引

序列
用于生成唯一,连续序号的对象。
创建语法:
create sequence user_id_seq
start with 1000
increment by 1
maxvalue 2000
minvalue 1000
nocycle
cache 1000;--指定内存中预先分配的序号
访问序列:
select user_id_seq.currval from dual;
select user_id-seq.nextval from dual;

更改删除序列:
alter sequence user_id_seq maxvalue 10000;--不能修改其start with 值
drop sequence user_id_seq;
在Hibernate中访问序列:

     
user_id_seq

 

视图
以经过定制的方式显示来自一个或多个表的数据
创建视图:
create or replace view
user_tbl_view (vid,vname,vage)
as select id,user_name,age from user_tbl
[with check option]|[with read only];
创建带有错误的视图:
create force view user_tbl_force_view as
select * from user_table;--此时user_table可以不存在
创建外联接视图:
create view user_stu_view as
select u.id,u.user_name,u.password,s.ddress
from user_tbl u,stu_tbl s
where u.s_id(+)=s.id;--哪一方带有(+),哪一方就是次要的
删除视图:
drop user_stu_view;

 

索引
用于提高SQL语句执行的性能
索引类型:
唯一索引,位图索引,组合索引,基于函数的索引,反向键索引

创建标准索引:
create index user_id_index on user_tbl(id) tablespace schooltbs;
重建索引:
alter index user_id_index rebuild;
删除索引:
drop index user_id_index;

创建唯一索引:
create unique index user_id_index on user_tbl(id);
创建组合索引:
create index name_pass_index on user_tbl(user_name,password);
创建反向键索引:
create index user_id_index on user_tbl(id) reverse;

 

四.使用PL/SQL

可用于创建存储过程,触发器,程序包,给SQL语句的执行添加程序逻辑。
支持SQL,在PL/SQL中可以使用:

数据操纵命令
事务控制命令
游标控制
SQL函数和SQL运算符

支持面向对象编程(OOP)

可移植性

更佳的性能,PL/SQL经过编译执行

 

分为三个部分:声明部分,可执行部分和异常处理部分
[declare
declarations]
begin
executable statements
[exception
handlers]
end;

打开输出
set serverout on;

 

--根据输入编号获取某学员的成绩--if

declare

score user_tbl.score%type;

begin

select score into score from user_tbl where id=‘&id‘;

if score>90 then

dbms_output.put_line(‘优秀‘);

elsif score>80 then

dbms_output.put_line(‘良好‘);

elsif score>60 then

dbms_output.put_line(‘及格‘);

else

dbms_output.put_line(‘差‘);

end if;

end;

 

--根据学员姓名获取某学员的成绩--if

declare

score user_tbl.score%type;

begin

select score into score from user_tbl where user_name=‘&name‘;

if score>90 then

dbms_output.put_line(‘优秀‘);

elsif score>80 then

dbms_output.put_line(‘良好‘);

elsif score>60 then

dbms_output.put_line(‘及格‘);

else

dbms_output.put_line(‘差‘);

end if;

end;

 

--case的使用

declare

grade user_tbl.grade%type;

begin

select grade into grade from user_tbl where id=‘&id‘;

case grade

when ‘A‘ then dbms_output.put_line(‘优异‘);

when ‘B‘ then dbms_output.put_line(‘优秀‘);

when ‘C‘ then dbms_output.put_line(‘良好‘);

else dbms_output.put_line(‘一般‘);

end case;

end;

 

--基本循环

declare

i number(4):=1;

begin

loop

dbms_output.put_line(‘loop size:‘||i);

i:=i+1;

exit when i>10;

end loop;

end;

 

 

--while循环

declare

i number(4):=1;

begin

while i<=10 loop

dbms_output.put_line(‘while loop size=‘||i);

i:=i+1;

end loop;

end;

 

--for循环

declare

i number(4):=1;

begin

for i in 1..10 loop

dbms_output.put_line(‘for loop Size:‘||i);

end loop;

end;

 

declare

i number(2):=1;

j number(2):=1;

begin

for i in reverse 1..9 loop

for j in 1..i loop

dbms_output.put(j||‘x‘||i||‘=‘||j*i||‘ ‘);

end loop;

dbms_output.put_line(‘‘);

end loop;

end;

 

--动态SQL

declare

userId number(2);

sql_str varchar2(100);

userName user_tbl.user_name%type;

begin

execute immediate ‘create table testExe(id number,test_name varchar2(20))‘;

userId:=‘&userId‘;

sql_str:=‘select user_name from user_tbl where id=:id‘;

execute immediate sql_str into userName using userId;

dbms_output.put_line(userName);

end;

(or

declare

 id_param number:=‘&id_param‘;

 sql_str varchar2(100);

 name_param stu_tbl.stu_name%type;

 begin

 sql_str:=‘select stu_name from stu_tbl where id=:p‘;

 execute immediate sql_str into name_param using id_param;

 dbms_output.put_line(name_param);

 end;

 /

)

 

--异常处理

declare

grade number(4);

begin

grade:=‘&grade‘;

case grade

when 1 then dbms_output.put_line(‘好的‘);

--else dbms_output.put_line(‘不好‘);

end case;

exception

when case_not_found then

dbms_output.put_line(‘输入类型不匹配!‘);

end;


--系统异常

declare

rowD user_tbl%rowtype;

begin

select * into rowD from user_tbl;

dbms_output.put_line(rowD.id||‘‘||rowD.user_name||‘ ‘||rowD.password);

exception

when too_many_rows then

dbms_output.put_line(‘不能将多行赋予一个属性!‘);

end;

or

declare

rowD user_tbl%rowtype;

begin

select * into rowD from user_tbl where id=5;

dbms_output.put_line(rowD.id||‘ ‘||rowD.user_name||‘ ‘||rowD.password);

exception

when too_many_rows then

dbms_output.put_line(‘不能将多行赋予一个属性!‘);

when no_data_found then

dbms_output.put_line(‘没有您要查找的数据!‘);

end;

 

--自定义错误

declare

invalidError exception;

category varchar2(20);

begin

category:=‘&category‘;

if category not in(‘附件‘,‘顶盘‘,‘备件‘) then

raise invalidError;

else

dbms_output.put_line(‘您输入的类别是:‘||category);

end if;

exception

when invalidError then

dbms_output.put_line(‘无法识别的类别!‘);

end;

 

--引发应用程序异常

declare

app_exception exception;

grade user_tbl.grade%type;

begin

select grade into grade from user_tbl where id=&id;

if grade=‘A‘ then

raise app_exception;

else

dbms_output.put_line(‘查询的等级为:‘||grade);

end if;

exception

when app_exception then

raise_application_error(-20001,‘未知的等级!‘);

end;


五、游标管理

游标类型:隐式游标,显式游标,REF游标

REF游标用于处理运行时才能确定的动态SQL查询的结果

 

==========隐式游标==========

在PL/SQL中使用DML语句时自动创建隐式游标
隐式游标自动声明、打开和关闭,其名为SQL

隐式游标的属性:
%found         SQL语句影响实质后返回true
%notfound      SQL语句没有影响实质后返回true
%rowcount      SQL语句影响的行数
%isopen        游标是否打开,始终为false

示例:

begin

update user_tbl set score=score+5;

if SQL%found then

    dbms_output.put_line(‘数据被更改: ‘||SQL%rowcount);

elsif sql%notfound then

    dbms_output.put_line(‘没有找到数据!‘);

end if;

if SQL%isopen then

    dbms_output.put_line(‘Open‘);

else

    dbms_output.put_line(‘Close‘);

end if;

end;

 

==========显式游标==========

在PL/SQL的声明部分定义查询,该查询可以返回多行

J         声明游标

J         打开游标

J         从游标中取回数据

J         关闭游标

声明游标完成两个任务:

给游标命名

将一个查询与游标关联
cursor cursor_name is select statement;

打开游标:

    open cursor_name;

取数据:

    fetch cursor_name into record_list;

关闭游标:

    close cursor_name;

显式游标的属性:

%found         执行最后一条fetch语句成功返回行时为true

%notfound      执行最后一条fetch语句未能返回行时为true

%rowcount      返回到目前为止游标提取的行数

%isopen        游标是否打开

 

示例:

declare

users user_tbl%rowtype;

cursor boys_cur is select * from user_tbl where sex=‘h‘;

begin

open boys_cur;

loop

fetch boys_cur into users;

exit when boys_cur%notfound;

dbms_output.put_line(users.user_name||‘  ‘||users.password);

dbms_output.put_line(boys_cur%rowcount);

end loop;

close boys_cur;

end;

 

带参的显式游标

declare

users user_tbl%rowtype;

cursor boys_cur(sexParam varchar2)

is select * from user_tbl where sex=sexParam;

begin

open boys_cur(‘&sex‘);

loop

fetch boys_cur into users;

exit when boys_cur%notfound;

dbms_output.put_line(users.user_name||‘  ‘||users.password);

dbms_output.put_line(boys_cur%rowcount);

end loop;

close boys_cur;

end;

 

使用显式游标更新行

declare

cursor user_update_cur is select sex from user_tbl for update;

usersex user_tbl.sex%type;

begin

open user_update_cur;

loop

fetch user_update_cur into usersex;

exit when user_update_cur%notfound;

dbms_output.put_line(usersex);

if usersex = ‘M‘ then

    update user_tbl set score=score-5 where current of user_update_cur;

else

    update user_tbl set score=score+5 where current of user_update_cur;

end if;

end loop;

close user_update_cur;

commit;

end;

 

循环游标

declare

cursor user_cur is select * from user_tbl;

begin

for username in user_cur loop

    dbms_output.put_line(username.user_name||‘  ‘||username.sex);

end loop;

end;

 

==========REF游标==========

REF游标和游标变量用于处理运行时动态执行的SQL查询

创建游标变量的步骤:

J         声明REF游标类型

J         声明REF游标类型的变量

声明类型的语法

Type ref_cursor_name is ref cursor [return return_type];

打开游标变量的语法

Open cursor_name for select_statement;

----声明强类型的游标

declare

type ref_cur is ref cursor return user_tbl%rowtype;

users_cur ref_cur;

----声明弱类型的游标

declare

type ref_cur is ref cursor;

users_cur ref_cur;

示例

----强类型

declare

type ref_cur is ref cursor return user_tbl%rowtype;

users_cur ref_cur;

users user_tbl%rowtype;

begin

open users_cur for select * from user_tbl where user_name=‘ny2t92‘;

loop

    fetch users_cur into users;

    exit when users_cur%notfound;

    dbms_output.put_line(users.user_Name);

end loop;

close users_cur;

end;

----弱类型

declare

type ref_cur is ref cursor;

my_cur ref_cur;

users user_tbl%rowtype;

stus stu_tbl%rowtype;

begin

open my_cur for select * from user_tbl;

loop

    fetch my_cur into users;

    exit when my_cur%notfound;

    dbms_output.put_line(users.user_Name);

end loop;

close my_cur;

open my_cur for select * from user_tbl where user_name=‘ny2t92‘;

loop

    fetch my_cur into users;

    exit when my_cur%notfound;

    dbms_output.put_line(users.user_Name);

end loop;

close my_cur;

open my_cur for select * from stu_tbl;

loop

fetch my_cur into stus;

exit when my_cur%notfound;

dbms_output.put_line(stus.stu_Name);

end loop;

close my_cur;

end;

----动态SQL游标

declare

type ref_cur is ref cursor;

my_cur ref_cur;

users user_tbl%rowtype;

username varchar2(20);

sqlstmt varchar2(200);

begin

username:=‘&username‘;

sqlstmt := ‘select * from user_tbl where user_name= :name‘;

open my_cur for sqlstmt using username;

loop

    fetch my_cur into users;

    exit when my_cur%notfound;

    dbms_output.put_line(users.user_Name);

end loop;

close my_cur;

end;

 

 

六.子程序

子程序分为:存储过程和函数,它是命名的PL/SQL块,编译并存储在数据库中。

子程序的各个部分:声明部分,可执行部分,异常处理部分。

过程----执行某些操作

函数----执行操作并返回值

 

==========存储过程==========

创建过程的语法:

create or replace procedure

proce_name (parameter_list)

is|as

local variable declaration

begin

executable statements

exception

exception_handlers

end proce_name;

 

过程参数的三种模式:

In----用于接收调用的值,默认的参数模式

Out----用于向调用程序返回值

In out----用于接收调用程序的值,并向调用程序返回更新的值

执行过程的语法:

Execute proce_name(parameter_list);

Declare

Variable var_list;

Begin

Proce_name(var_list);

End;

将过程执行的权限授予其他用户:

Grant execute on proce_name to scott;

Grant execute on proce_name to public;

删除存储过程:

Drop procedure proce_name;

 

==========函数==========

创建函数的语法:

Create or replace function

Fun_name (parameter_list)

Return datatype is|as

Local declarations

Begin

Executable statements;

Return result;

Exception

Exce_handlers;

End;

函数只能接收in参数,不能接受out或in out参数,形参不能是PL/SQL类型

函数的返回类型也必须是数据库类型

访问函数的方式:

J         使用PL/SQL块

J         使用SQL语句

Select fun_name(parameter_list) from dual;

Oracle数据库语句大全

标签:

热心网友 时间:2022-04-30 23:32

create or replace procere P(a char, b int)
is
begin
……
end;
基本语法就是这样了
如果你要oracle和sql server比较的东西 留下邮箱 我给你发一份整理过的word

热心网友 时间:2022-05-01 00:50

第一个问题:is和as是可以互用的,用哪个都没关系的第二个问题:在外面第三个问题:过程中没有declare关键字,declare用在语句块中第四个问题:估计你

热心网友 时间:2022-05-01 02:25

参考资料里面,有一些例子.

参考资料:http://hi.baidu.com/wangqing999/blog/item/0991d3124070854420a4e9b4.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 交电费的电话多少? 谁知道Adobe Photoshop的中文意思 Adobe Photoshop cs什么意思 Adobe Photoshop什么意思 爱玛电动车60v6个电瓶的续航可以达到多少公里新车 爱玛电动车5个电池60v能跑多远 爱玛电动车风暴max能用60V的电池吗 爱玛电动车5个电池组合60v20安能跑多远? 爱玛电动车60Ⅴ20A电瓶多少钱? 爱玛电动车换新的天能60伏电瓶可以骑多少公里? i512500核显能玩LOL吗 i5的核显,可以玩什么游戏? 11代i5核显玩csgo嘛 兄弟们这配置玩csgo能多少帧? i51155G7能玩什么游戏 i5 11500核显能玩逆战吗 i57300u核显能玩英雄联盟吗 拼多多上购买的骑士卡是真的吗 i5 10400的核显能打《LOL》吗? 网购可以用骑士卡吗 12代i5核显能玩什么游戏 小米4电信版“应用魔盒”软件怎么卸载 ,简直就流氓软件之王,费电费流量还删除不了! 华为应用魔盒怎么删除啊烦死了 红米note手机上有个应用魔盒里面有好多软件是我自己下载的,怎么才能卸载 华为手机卸载了应用魔盒,下次开机自己又安上了,怎样才能卸载? 夫妻婚后财产怎么分 火线魔盒无法卸载 夫妻婚后财产包括哪些 如何卸载天猫魔盒里软件 夫妻婚后财产分割 夫妻婚后财产有哪些 婚后财产如何分割 小米3没有了应用魔盒咋么卸载软件 哪些财产属于婚后夫妻共同财产 红米上的应用魔盒能卸载么? 结婚后哪些财产是夫妻共同财产 婚后哪些属于夫妻共同财产? 婚后所得财产属于夫妻共同财产吗 怎么在输入法中输入下标横线 我在网上买的火车票,到了北京西站去哪里取票 急!急!怎么用Microsoft Word 在文字下标横线??