存储过程
以向表中循环添加记录为例:
语法:
create [or replace] procedure 存储过程名(arg1 {in|out|in out}data_type,arg2 {in|out|intout data_type,...)
is|as
定义部分
begin
执行部分
[exception
...
]
end;
in,out ,in out 是形参的模式
in:实参传递给形参,值只能读不能写
out:实参传递给形参,初始值是null,但是在过程中可以被读,被写,返回时,
形参的值会赋予实参(变量)
建测试表:
create table t01(
id number(5),
name varchar2(12)
);
新建无参存储过程:
create or replace procedure test01 as
v1 number(5); --存储过程中声明变量不能有declare
begin
v1:=1;
loop
insert into t01 values(v1,'aaaaa');
v1:=v1+1;
exit when v1>1000;
end loop;
end;
/ --斜杠就是让服务器执行前面所写的sql脚本。如果是普通的select语句,一个分号,就可以执行了。但是如果是存储过程,那么遇到分号,就不能马上执行了。这个时候,就需要通过斜杠(/)来执行。
调用存储过程:
可以用:
execute test01;
exec test01; --exec的简写
call test01();
调用时的区别:
call在pl/sql与sqlplus中都可以使用,execute只能在sqlplus中使用。
call调用无参的函数与存储过程时必须带括号,execute则不用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?