从一个用户接受表数据

zzmbeyond01 2004-12-21 01:05:05
各位先进:

这样的存储过程如何写?oracle8.16
想实现:把表从一个用户导入到另一个用户

create or replace procedure FromYFSL(
p_year IN VARCHAR2 --输入年
) IS
v_user VARCHAR2(10); --依据年确定用户
v_cnt number:=0;
--利用游标变量
v_sql VARCHAR2 (4000);
TYPE curref IS REF CURSOR;
v_cur curref;

begin
v_user:='dw'||p_year;
--判断该用户是否存在,否则触发用户不存在异常
SELECT COUNT(*) INTO v_cnt FROM all_users t WHERE t.USERNAME =UPPER(v_user);
If v_cnt=1 THEN
--导入单位数据dwgk
v_sql:='SELECT * FROM '||v_user||'.DW';
EXECUTE IMMEDIATE 'DELETE FROM '||v_user||'.DW '; --clear dw
OPEN v_cur FOR v_sql;
LOOP
FETCH v_cur INTO v_dw;
EXIT WHEN v_cur%NOTFOUND;

//这样的sql语句好像不行耶,而且v_user.dw 也编译不过去,,
--插入单位值
INSERT INTO STUDY.DW(DM, DW, ZDB,Addr ,BDDH )
(select t.dm,
t.dw,
t.zdb,
t.addr,
t.bddh
 from v_user.dw t);

END LOOP;
CLOSE v_cur;
END IF;
end;
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tian00weiwei 2004-12-21
  • 打赏
  • 举报
回复
为什么要用游标?直接用楼上的sql就行了么。
GerryYang 2004-12-21
  • 打赏
  • 举报
回复
肯定是可以的,只要赋了权限.
INSERT INTO STUDY.DW(DM, DW, ZDB,Addr ,BDDH )
select t.dm,
t.dw,
t.zdb,
t.addr,
t.bddh
 from v_user.dw t;
去掉括号.

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧