存储过程的问题 求大神解答,本人刚接触这个

createorreplaceprocedureupdateJzgInfoast_countnumber;--先声明一个变量t_count,表dual表的值赋给t_cou... create or replace procedure updateJzgInfo as

t_count number;--先声明一个变量t_count,表dual表的值赋给t_count,如果这个值小于1,表示记录不存在,进行插入操作,反之,存在就进行修改操作。
cursor user_cursor is select ZGH from v_jzg@updateInfo; --定义游标
v_zgh v_jzg@updateInfo.ZGH%type;

begin
if not user_cursor%isopen then --打开游标
open user_cursor;
end if;

loop
fetch user_cursor into v_zgh; --提取数据

exit when user_cursor@notfound;

select count(*) into t_count from dual where exists(select 1 from sys_user where login_name = v_zgh);
If (t_count < 1) then--本地数据库不存在目标库的教职工编号(新建人员信息)

dbms_output.put_line('添加...');
insert into sys_user(id,LOGIN_NAME,name) select SEQ_SYS_USER.NEXTVAL,b.* from (select ZGH,XM from v_jzg@updateInfo t where t.ZGH = v_zgh) b;

Else --本地数据库存在目标库的教职工编号(更新人员信息)

dbms_output.put_line('修改...');
-- update sys_user s set (name) = (SELECT XM FROM v_jzg@updateInfo j WHERE s.LOGIN_NAME = j.ZGH);
-- dbms_output.put_line('修改成功');
End if;

end loop;
dbms_output.put_line('循环结束');

close user_cursor; --关闭游标
Exception
--错误处理部分。
WHEN NO_DATA_FOUND THEN

dbms_output.put_line('内部执行的异常');

--OTHERS表示除了声明外的任意错误。
WHEN OTHERS THEN

-- vs_msg := 'ERROR IN updateJzgInfo('||is_ym||'):'||SUBSTR(SQLERRM,1,500);

ROLLBACK;
--把当前错误记录进日志表。
-- INSERT INTO LOG_INFO(proc_name,error_info,op_date) VALUES('updateJzgInfo',vs_msg,SYSDATE);

COMMIT;

RETURN;
end updateJzgInfo;

报了很多错,有的代码注释了
错误:PL/SQL: SQL Statement ignored
行:18
文本:select count(*) into t_count from dual where exists(select 1 from sys_user where login_name = v_zgh);
错误:PLS-00352: 无法访问另一数据库 'NOTFOUND'
行:20
文本:If (t_count < 1) then--本地数据库不存在目标库的教职工编号(新建人员信息)
错误:PLS-00201: 必须声明标识符 'USER_CURSOR@NOTFOUND'
行:20
文本:If (t_count < 1) then--本地数据库不存在目标库的教职工编号(新建人员信息)
错误:PL/SQL: Statement ignored
展开
 我来答
sui159753
推荐于2016-05-21 · TA获得超过226个赞
知道小有建树答主
回答量:207
采纳率:100%
帮助的人:132万
展开全部
create or replace procedure updateJzgInfo  as
     
       t_count number:=0;--先声明一个变量t_count,表dual表的值赋给t_count,如果这个值小于1,表示记录不存在,进行插入操作,反之,存在就进行修改操作。
       cursor user_cursor is select ZGH from v_jzg@updateInfo; --定义游标
       v_zgh v_jzg@updateInfo.ZGH%type;
begin
    if not user_cursor%isopen then  --打开游标
     open user_cursor;
    end if;
       loop
                  fetch user_cursor into v_zgh; --提取数据
                   
                  exit when user_cursor%notfound;        
                                 
                 select count(*) into t_count from sys_user where login_name = v_zgh;
                 If (t_count < 1) then--本地数据库不存在目标库的教职工编号(新建人员信息)
                     
                        dbms_output.put_line('添加...');
                        insert into sys_user(id,LOGIN_NAME,name)  select SEQ_SYS_USER.NEXTVAL,b.ZGH,b.XM from (select ZGH,XM from v_jzg@updateInfo t where t.ZGH = v_zgh) b;

Else  --本地数据库存在目标库的教职工编号(更新人员信息)
                    
dbms_output.put_line('修改...');
update sys_user s  set   name =   (SELECT XM FROM v_jzg@updateInfo j WHERE s.LOGIN_NAME = v_zgh); 
dbms_output.put_line('修改成功');
                End if;
   
       end loop;
       dbms_output.put_line('循环结束');
       
    close user_cursor; --关闭游标
 end updateJzgInfo;
今至电子科技有限公司
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整... 点击进入详情页
本回答由今至电子科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式