当前位置:首页 » 存储配置 » oracle存储过程ifin

oracle存储过程ifin

发布时间: 2024-02-08 02:19:16

A. oracle存储过程怎么写循环

写循环的操作方法和步骤如下:

1、第一步,编写存储过程的整体结构,然后定义变量,见下图。

B. oracle储存过程中,if条件为某变量不等于1,怎么写

oracle存储过程中的if条件判断的写法:
比如:
temp varchar2(10) := '10000';
if temp <> '10000' then
insert into ...
else
update .......

end if;

C. oracle存储过程IF判断的问题

问题1:当你传入37
时,IF
FLAG>5
已经满足条件了,直接V_VALUE
:=1;,不会继续判断了。然后就调到end
if。可以按f9调试,不信一步步看它的执行过程。
问题2:IF
V_NULL=NULL,不是这样写,是IF
V_NULL
IS
NULL
,就会输出888啦。

D. 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;

E. oracle存储过程循环怎么写

Oracle中有三种循环(For、While、Loop):
1、loop循环:

sql">createorreplaceprocerepro_test_loopis
inumber;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
ifi>5then
exit;
endif;
endloop;
endpro_test_loop;


2、while循环:

createorreplaceprocerepro_test_loopis
inumber;
begin
i:=0;
whilei<5loop
i:=i+1;
dbms_output.put_line(i);
endloop;
endpro_test_loop;


3、for循环1:

createorreplaceprocerepro_test_foris
inumber;
begin
i:=0;
foriin1..5loop
dbms_output.put_line(i);
endloop;
endpro_test_for;

4、for循环2:

createorreplaceprocerepro_test_cursoris
userRowt_user%rowtype;
cursoruserRowsis
select*fromt_user;
begin
foruserRowinuserRowsloop
dbms_output.put_line(userRow.Id||','||userRow.Name||','||userRows%rowcount);
endloop;
endpro_test_cursor;

F. oracle 怎么调用存储过程

ORACLE存储过程 以oracle自带例子数据库的表举例
1、

create or replace procere p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;

创建了存储过程不代表运行了存储过程;
运行此存储过程 :
方式一 exec p;
方式二
begin
p;
end;
2、带参数的存储过程
in 相当于程序里的参数,供传入用,在存储过程不能改变其值;
out 相当于程序里的返回值,在存储过程中可以为其赋值传出;
in out 既可以当参数又可以当返回值用;
不带上述说明符默认为in类型;

下例中v_a v_b 为in类型
v_c 为out类型
v_d 为in out 类型

create or replace procere p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;

---> 调试时:
可以在命令窗口调试,出错时 用show errors 显示出错信息;
可以在plDv中调试;

---> 运行时:
可以在命令窗口运行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中调试;

G. 谁知道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单步调试
参考
http://www.cnblogs.com/happyday56/archive/2007/07/05/806830.html

热点内容
android备忘录源码 发布:2025-01-20 01:06:32 浏览:454
怎么禁用aspx缓存 发布:2025-01-20 01:00:50 浏览:687
我的手机如何恢复安卓系统 发布:2025-01-20 00:55:48 浏览:366
eclipsejsp编译 发布:2025-01-20 00:51:02 浏览:860
虚拟机连宿主机ftp 发布:2025-01-20 00:43:04 浏览:356
最小生成树的prim算法 发布:2025-01-20 00:39:40 浏览:325
淘宝助理无法上传 发布:2025-01-20 00:34:33 浏览:883
如何做一个代理服务器 发布:2025-01-20 00:18:39 浏览:803
android背单词源码 发布:2025-01-19 23:57:21 浏览:727
领动配置怎么样 发布:2025-01-19 23:56:35 浏览:83