比较复杂的操作,但是该脚本在SQL理运行是没有问题的,现在想在asp.net页面做个按钮执行该SQL脚本,里面的SQL语句可以全部拿出来,不一定要在文本里读出来,但是SQL语句比较多,在ASP.NET执行不了,怎么执行ORACLE里的写好的SQL脚本begin 
sql;
end;这种不行
放在ORACLE的存储过程里执行也不行

解决方案 »

  1.   

    放在ORACLE的存储过程里执行也不行 ????? 为什么不行?
      

  2.   

    放在ORACLE的存储过程里执行也不行?
      

  3.   

    sql脚本如下:(在ORACLE跑的是没问题的,所以脚本肯定没错)/*更新机构纳税人表*/
    alter   table   t_dj_jgnsr   NOLOGGING;
    drop table t_dj_jgnsr;
    create table   t_dj_jgnsr
      as select * from t_dj_jgnsr@ha3  where gljg_dm like '2320804%';
    alter   table   t_dj_jgnsr  LOGGING;
    commit;
    /*更新T_RD_SZJDXX税种鉴定信息表*/
    alter   table   T_RD_SZJDXX   NOLOGGING;
    drop table T_RD_SZJDXX;
    create table   T_RD_SZJDXX
      as select * from T_RD_SZJDXX@ha3 t where t.swglm in (select distinct swglm from t_dj_jgnsr);
    alter   table   T_RD_SZJDXX  LOGGING;
    commit;/*更新t_zs_jkmx缴款明细*/
    alter   table   t_zs_jkmx   NOLOGGING;
    drop table t_zs_jkmx;
     create table  t_zs_jkmx
     as select * from t_zs_jkmx@ha3 t where t.gljg_dm like  '2320804%' and t.zsxm_dm in('12','15');
    alter   table   t_zs_jkmx  LOGGING;
    commit;
    /*更新t_dj_tdsysdjxx  土地税登记信息*/
    alter   table   t_dj_tdsysdjxx   NOLOGGING;
    drop table t_dj_tdsysdjxx;
     create table  t_dj_tdsysdjxx
     as select * from t_dj_tdsysdjxx@ha3 t where t.swglm in (select distinct swglm from t_dj_jgnsr);
    alter   table   t_dj_tdsysdjxx  LOGGING;
    commit;/*更新t_dj_fcsdjxx  房产说登记信息*/
    alter   table   t_dj_fcsdjxx   NOLOGGING;
    drop table t_dj_fcsdjxx;
     create table  t_dj_fcsdjxx
     as select * from t_dj_fcsdjxx@ha3 t where t.swglm in (select distinct swglm from t_dj_jgnsr);
    alter   table   t_dj_fcsdjxx  LOGGING;
    commit;
      

  4.   

    @ha3 是一个DBLINK,定义好了并且是PUBLIC 的
      

  5.   

    关键是楼主要提供错误信息。 估计把 commit;都去掉,用OleDbCommand一起执行就没问题了。 
    写个存储过程调用应该也可以。
      

  6.   

    用存储过程吧--建立包
    CREATE OR REPLACE PACKAGE MY_PACKAGE
    AS
    TYPE TEST_CURSOR IS REF CURSOR;--TEST_CURSOR 为包的类型,可以根据需要,自己定义,名称只要有意义即可
    END MY_PACKAGE;
    --建立存储过程
    CREATE OR REPLACE PROCEDURE GET_All(P_NAME OUT MY_PACKAGE.TEST_CURSOR)
    AS
    BEGIN
           OPEN P_NAME FOR SELECT*FROM DB_PROC ;
           --这只是个实例,具体的过程,根据你的需要,自己写
    END GET_all;
      

  7.   

    都是ddl语句 没必要 commit
      

  8.   

    如果你的脚本没错建议你去下载这个类http://download.csdn.net/source/2187934 Oracle的通用类
      

  9.   

    不知道是你说的不清楚还是我语文没学好总之就是没看明白你的意思(什么在oracle里可以执行,放到asp.net就不行。。难道你的ASP.NET在后台执行不是放到oracle里执行?)
      

  10.   

    这样语句肯定可以执行的。
    你的语句没有什么错误啊 。把commit; 去掉试试
      

  11.   

    在接口中执行和在工具里执行有点细微差别 把commit去掉试一下