Sql代码
- decalre
-
- var1number(2);
- var2char(2):='11';
-
- begin
- --语句
- end;
ifa=1orb=2then
elsifc=3else
endif;
case 语句
case语句如果作为分支控制语句,最后结束语句是end case,如果是作为select语句里的控制语句则只需要end。
declare
numnumber(10):=1;
case
whennum=0thendbms_output.put_line('zero');
whennum=1thendbms_output.put_line('one');
elsedbms_output.put_line('default');
endcase;
casenum
when0when1end;
for循环主要有两个用处。
1、 循环一个范围 格式:for i in [start .. end] loop ... end loop;
foriin0..9loop
dbms_output.put_line('i:'||i);
endloop;
2、遍历隐式游标 隐式游标的好处是不需要手动关闭,方便
forcurrowin(
selectt.col1,t.col2
fromtableNamet
where...
)loop
ifcurrow.col1=0return;
endif;
endloop;
while 循环
isok:=9;
whileisok>=0loop
isok:=isok-1;
ifisok=8continue;
ifisok=4 exit;
dbms_output.put_line('isok:'||isok);
endloop;
dbms_output.put_line('outsidewhileloop.');
存储过程定义
createorreplaceproceduresp_name(
--入参、出参列表,逗号分隔。
uidinvarchar2,
startDateindate,0); padding:0px; margin:0px; width:auto; border:0px">--第二个输入参数
defaultVarinvarchar2default"",0); padding:0px; margin:0px; width:auto; border:0px">--默认参数,如果不传,要注意参数的顺序
isokoutnumber,0); padding:0px; margin:0px; width:auto; border:0px">--输出参数
resultoutvarchar2
)
as
--变量声明,每个声明用分号结束。可以在声明的同时初始化
var1varchar2(11);
var2number(2):=123;
--字符串拼接用||
dbms_output.put_line('isok:'||'abc');
--调用其他存储过程
sub_sp_name(param1,prarm2,outParam1,outParam2);
--存储过程结束
函数定义
functionfunc(
returnnumber
returnret_val;
存储过程与函数异同
1、两者定义类似,都可以带输入输出参数。 2、函数有返回值,存储过程没有。 3、函数的调用要在select语句里;而存储过程不用,可以独立调用。
隐式游标 隐式游标的好处是不需要手动关闭,方便
显式游标
integer;
v_event_idnumber(10);
v_isagainnumber(2);
v_ratenumber(2);
v_senderchar(11):='13800138000';
cursorcursorVarisselectevent_id,isagain,ratefromcall_eventwheresender=v_sender;
opencursorVar;
loop
fetchcursorVarintov_event_id,v_isagain,v_rate;
exitwhencursorVar%notfound;
dbms_output.put_line(v_event_id||','||v_isagain||','||v_rate);
closecursorVar;
--游标的属性有:%FOUND,%NOTFOUNRD,%ISOPEN,%ROWCOUNT;
--%FOUND:已检索到记录时,返回true
--%NOTFOUNRD:检索不到记录时,返回true
--%ISOPEN:游标已打开时返回true
--%ROWCOUNT:代表检索的记录数,从1开始
带参数游标
cursorcursorVar(p_sendervarchar2)wheresender=p_sender;cursorVar(v_sender);
Sql代码
- decalre
- --变量声明
- --仅声明
- --在声明的同时初始化
-
- begin
- --语句
- --语句块结束
then
else
endif;
case 语句
case语句如果作为分支控制语句,最后结束语句是end case,如果是作为select语句里的控制语句则只需要end。
declare
numnumber(10):=1;
case
thendbms_output.put_line('zero');
thendbms_output.put_line('one');
elsedbms_output.put_line('default');
case;
casenum
end;
for循环主要有两个用处。
1、 循环一个范围 格式:for i in [start .. end] loop ... end loop;
in0..9loop
dbms_output.put_line('i:'||i);
endloop;
2、遍历隐式游标 隐式游标的好处是不需要手动关闭,方便
in(
fromtableNamet
where...
)loop
--中止sp,返回
endif;
endloop;
while 循环
isok:=9;
whileisok>=0loop
isok:=isok-1;
--与编程语言的continue语义一样,跳过当前循环的剩余语句,回到循环开始
--与编程语言的break语义一样,跳出循环
dbms_output.put_line('isok:'||isok);
endloop;
dbms_output.put_line('outsidewhileloop.');
存储过程定义
proceduresp_name(
--入参、出参列表,逗号分隔。
--不能带长度信息
--第二个输入参数
--默认参数,如果不传,要注意参数的顺序
--输出参数
--第二个输出参数
)
as
--变量声明,每个声明用分号结束。可以在声明的同时初始化
var1varchar2(11);
var2number(2):=123;
--字符串拼接用||
dbms_output.put_line('isok:'||'abc');
--调用其他存储过程
--存储过程结束
函数定义
functionfunc(
--定义返回类型
returnret_val;
存储过程与函数异同
1、两者定义类似,都可以带输入输出参数。 2、函数有返回值,存储过程没有。 3、函数的调用要在select语句里;而存储过程不用,可以独立调用。
隐式游标 隐式游标的好处是不需要手动关闭,方便
显式游标
integer;
v_event_idnumber(10);
v_isagainnumber(2);
v_ratenumber(2);
char(11):='13800138000';
--声明游标
--打开游标
loop
--取值
--当没有记录时退出循环
--关闭游标
--%FOUND:已检索到记录时,返回true
--%NOTFOUNRD:检索不到记录时,返回true
--%ISOPEN:游标已打开时返回true
--%ROWCOUNT:代表检索的记录数,从1开始
带参数游标
--打开游标,在括号里传参。
end;
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|