-------------简单HELLO
create or replace procedure proc_word
is
begin
DBMS_OUTPUT.put_line('HELLO WORD');
end;
-----------------带返回值
select * from pt_group t
create or replace procedure GetRecords(name_out out varchar2,age_in in varchar2) as
begin
select t.groupname into name_out from pt_group t where t.groupid=age_in;
end;
---------------------数据操作
create or replace procedure insertRecord(depid in varchar2, depname in varchar2) is
begin
insert into mydep values(depid, depname);
end;
create table mydep
(
depid varchar2(50),
depname varchar2(50)
)
select * from mydep;
---------------------------------------返回结果集,动态游标的
create or replace package Test_cursor as
type my_cursor is ref cursor ;
procedure my_procedure(para out my_cursor);
end Test_cursor;
create or replace package body Test_cursor as
procedure my_procedure(para out my_cursor) is
begin
open para for
select d.depname from pt_dep d;
end my_procedure;
end Test_cursor;
---------------------------------------条件控制语句
create or replace procedure GetRecords(name_out out varchar2,age_in in varchar2) as
begin
--select NAME into name_out from test where AGE = age_in;
if age_in is null
then
DBMS_OUTPUT.put_line('depid is null');
else
select t.groupname into name_out from pt_group t where t.groupid=age_in;
end if;
end;
-------------------调试语句------------
declare
depid varchar2(50):='1001';
depname varchar2(50);
begin
getrecords(depname,depid);
dbms_output.put_line(depname);
end;
--------------------while循环------------------------------
create or replace procedure getWhile(name_out out varchar2,age_in in varchar2)
as
num int:=1;
begin
while num<10 loop
select t.groupname into name_out from pt_group t where t.groupid=age_in;
DBMS_OUTPUT.put_line(name_out);
num:=num+1;
end loop;
end;
--------------------------------------FOR循环,变量会自动加1------------
create or replace procedure getFor(name_out out varchar2,age_in in varchar2)
as
num int:=1;
begin
for num in 1..9 loop
select t.groupname into name_out from pt_group t where t.groupid=age_in;
DBMS_OUTPUT.put_line(name_out);
end loop;
end;
------------------------------------------简单的PL/SQL 显式 游标设置------------处理select---------------
create or replace procedure gerCursor
is
depid varchar2(50);
depname varchar2(50);
CURSOR myc is --定义游标
select depid,depname from mydep;
begin
open myc;--打开游标
loop
fetch myc into depid,depname;--向变量取值
exit when myc%notfound;--跳出循环
if depid = '2' then--条件判断
update mydep set depname = '4444' where depid='2';
end if;
end loop;
close myc;--关闭游标
commit;--提交数据
end;
--两个字符串的比较直接 = 就ok
-----------------------------------隐式游标------可以不用定义----------------处理select into,insert,update,delete------------------
create or replace procedure getHidden
is
begin
update mydep set depname = '555' where depid='1';
if SQL%NOTFOUND then
insert into mydep values('1','1');
end if;
commit;
end;
------------------------------------------------------------------------------------