存储过程循环
create or replace procedure procedure_name [有参数就写,没参数就不写 ]
as
cursor cursor_name -- 游标,是用存储数据的
is
select 字段名,......,[ 或者是 * ] from table_name [可以加各种条件 ] ;(第一张表)
Parameter_name 字段类型 ;
...... ;
begin
for 自定义名(info) in cursor_name loop -- 循环
-- 例如,要先删除已存在的数据,再添加,之前有出过问题(不知道是不是没有分开的缘故),所以将插入和删除语句放在两个循环中;
select count (字段名/ * ) into parameter_name from table_name where 字段名=
Info.上面is后面查询语句对应的字段名
PS:(两张表的名称可以不同,类型不同的话,需要转换); (第二张表)
--判断数据是否存在
If parameter_name >0 then
delete from table_name where 字段名=info.第一张表字段名 ;
End if;
End loop;
Commit; --一定要提交,要不会死锁
for 自定义名(info) in cursor_name loop -- 循环
Insert into table_name values(info.一表字段名,............ );
End loop;
Commit; --一定要提交,要不会死锁
End ;
错误情况:
ORA-02070: 数据库 B2B2 不支持此上下文中的 TO_NUMBER
原因:
是因为两张表字段不一致,需要转换;
Eg: goodsid 一个是varchar2,类型,另一个是number类型,
change _Parameter_type_name varchar2( n ); --参数类型
-- 当用到该参数时,转换:
change _Parameter_type_name :=info(循环里的同上).要转换的字段名