被神通数据库 SQL语句使用¶
用户可以在客户端单独执行的SQL语句中调用PLOSCAR存储过程。 具体地说,PLOSCAR过程调用可以作为操作数出现在SQL语句的任何表达式中。 在这种调用方式中,PLOSCAR过程扮演的角色有以下几种。
示例1:作为结果集返回¶
-- 清理环境
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;
CREATE TABLE tab (a int);
create or replace procedure proc() as
begin
insert into tab values (1);
if FOUND then
insert into tab values (2);
end if;
update tab set a = 100 where a = 1;
if FOUND then
insert into tab values (3);
end if;
delete from tab where a = 9999; -- matches no rows
if not FOUND then
insert into tab values (4);
end if;
for i in 1 .. 10 loop
-- no need to do anything
NULL;
end loop;
if FOUND then
insert into tab values (5);
end if;
-- never executes the loop
for i in 2 .. 1 loop
-- no need to do anything
NULL;
end loop;
if not FOUND then
insert into tab values (6);
end if;
end;
/
exec proc();
select * from tab;
A(int) |
------------
100 |
------------
2 |
------------
3 |
------------
4 |
------------
5 |
------------
6 |
总数目:6
--删除过程
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;
当存储过程参数中有OUT/INOUT型参数时,参数部分会作为结果集返回。 OUT/INOUT型参数的值依次作为结果集的第一、二、……列。
示例2:含有OUT/INOUT型参数的存储过程¶
-- 清理环境
DROP PROCEDURE add_one;
create or replace procedure add_one(i inout int, j inout int) as
begin
i := i + 1;
j := j + 1;
end;
/
exec add_one(10,100);
I(int) |J(int) |
------------------------
11 |101 |
总数目:1
--删除过程
DROP PROCEDURE add_one;