set serveroutput on //显示信息
show error; //sql*plus显示错误信息
//只有定义部分的块
begin
dbms_output.put_line('hello word');
end;
//有定义部分还有执行部分
declare name varchar2(20); --定义部分
begin
--执行部分
select name into name from user where id=10;
dbms_output.put_line(name);
end;
//有定义部分、执行部分,还有异常部分块结构
declare name varchar2(20); --定义部分
begin
--执行部分
select name into name from user where id=$id;
dbms_output.put_line(name);
excepion --异常部分
when NO_DATA_FOUND then
dbms_output.put_line('出错了!');
when others then
dbms_output.put_line('不知道的异常!');
end;
//没有参数的proc
create or replace procedure sp_testname()
--定义部分
begin
--执行部分
select * from category ;
end;
//有带进参数的proc,in可写可不写,我发现mysql中in可以写在前面,但oracle中的in,out必须写中间
create or replace procedure sp_testname( id in number)
--定义部分
begin
--执行部分
select * from category where category_id=id;
end;
//有带进参数的proc,又有带出参数,mysql中好像varchar类型 都要带长度,
create or replace procedure sp_testname(id number,categoryname out varchar2)
--定义部分
begin
--执行部分
select categoryname into categoryname from category where category_id=id;
end;
//函数
create or replace function calc(num1 number,num2 number) return number is result nunber(10,0);
begin
select num1+num2 into result from dual;
return result;
end;
//包
create or replace package sp_packages is
procedure insert_user(username varchar2,passwd varchar2);
function calc(num1 number,num2 number) return number;
//包体
create or replace package body sp_packages is
procedure insert_user(username varchar2,passwd varchar2) is
--定义部分
begin
--执行部分
insert into user values(username,passwd);
end;
function calc(num1 number,num2 number) return number is result nunber(10,0)
begin
--执行部分
select num1+num2 into result from dual;
return result;
end;
oracle 块结构、存储过程、函数、包、包体
最新推荐文章于 2021-01-19 14:19:23 发布