全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:654
推到 Plurk!
推到 Facebook!

从一个用户接受表数据

尚未結案
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-21 01:04:56 IP:222.183.xxx.xxx 未訂閱
各位先进:    这样的存储过程如何写?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;
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-21 08:40:16 IP:210.65.xxx.xxx 未訂閱
Hi zzmbeyond01,    PL/SQL 中是不能用這樣的寫法的!
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); 
先組合出 Insert SQL Command 再用你先前的語法試試應該可行 EXECUTE IMMEDIATE 'Your SQL Command'; ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-21 12:23:32 IP:222.183.xxx.xxx 未訂閱
谢谢Fishman!    如果两个表的字段都一样,但是顺序有不同,是不是必须要指名插入的各个字段呢
INSERT INTO user1.DW(DM, DW, ZDB,Addr ,BDDH )
(select t.dm,
t.dw,
t.zdb,
t.addr,
t.bddh
 from user2.dw_tmp t);     
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-21 12:56:52 IP:210.65.xxx.xxx 未訂閱
Hi zzmbeyond01,    是的,如果欄位順序與數量一致,你甚至連欄位名稱都可以省略,即使欄位名稱不一樣也可以
insrtt into t2 select * from t1
但是若欄位順序或欄位數量不一致,就必須寫清楚
insert into t2
      (field1,
       field2,
        .....) 
select field1,
       field2,
       .... 
from  t1
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-04-27 6:32:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!