oracle存储过程if条件
A. oracle 存储过程中 如果用if语句判断一条查询语句的结果集是否为空
已经经过测试,可以。
create table test1023(id int); --创建测试表 test1023
declare cnt int;
begin
select count(*) into cnt from test1023;
if cnt=0 then
insert into test1023 values('1');
commit;
end if;
end;
B. oracle 的存储过程if怎么嵌套啊
我给你举个例子:
--配送量(万箱)
select sum(QUANTITY_SUM) into quantity_sum from DWV_OUT_DIST_BILL where to_char(DIST_DATE,'YYYYMM')=month ;
if quantity_sum is null then
quantity_sum:=0;
end if;
--转换成万箱
quantity_sum :=quantity_sum/50/10000;
C. oracle存储过程中写IF ELES
if 条件 then
语句
elsif 条件 then
语句
else
语句
end if;
D. oracle procere存储过程
OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS变量1 INTEGER :=0;变量2 DATE;BEGIN.END 存储过程名字2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;3、IF判断
IF 条件1 THEN Do Someting ELSIF 条件2 THEN Do Someting ELSIF 条件3 THEN Do Someting ELSE Do SometingEND IF;4、while循环
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP; 5、变量赋值
V_TEST := 123; 6、用for in使用cursor(游标)
. IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END; 7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select.into.给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。WHEN OTHERS THEN 表示是其它异常。RAISE表示抛出异常,让User可以看到。*/
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line(‘HI‘);
b.打开DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存储过程
E. oracle存储过程中if条件后的sql没有执行
你把你这两个 dbms输出的语句注释掉试下,你这两个语句后面都有封号,不是代表if语句已经结束了吗
F. oracle 存储过程里的if else
ifS_date=4then
p_temp();
elsifS_date!=4then
p_temp2();
endif;
G. 求教一下oracle存储过程中if的嵌套使用问题
一、
if()then
if()then
end if;
end if;
二、
if()then
elsif()then
end if;
H. oracle 存储过程 if语句
&&用and表示,如:
if 1=1 and 2=2 then
...
end;
||用or表示。
!用not表示。
I. Oracle 的存储过程怎么写。
oracle 存储过程的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END 存储过程名字
2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...
3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.while 循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
5.变量赋值
V_TEST := 123;
6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7.带参数的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(变量值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
8.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试