本帖最后由 baofengyingyinaaa 于 2012-04-13 11:49:39 编辑

解决方案 »

  1.   

    这个是sqlserver已这个为准
    private static String SQL_SUB_ID =
    " declare @module varchar(20) " +
    " declare @comp_code varchar(20) " +
    " declare @copy_code varchar(3) " +
    " set @module = ? " +
    " set @comp_code = ? " +
    " set @copy_code = ? " +
    " declare @copy_type int " +
    " select @copy_type = copy_type from sys_copy where comp_code = @comp_code and copy_code = @copy_code " +
    " declare @sql varchar(1000) " +
    " create table #tmp(mod_code varchar(20), copy1sql varchar(100)) " +
    " set @sql = 'insert into #tmp(mod_code, copy1sql) select mod_code,  copy1sql from sys_mod where copy' + convert(varchar(1), @copy_type) + ' = 1 and mod_code like dbo.getModuleCodeByPermId(''' + @module + ''') + ''%''' " +
    " exec(@sql) " +
    " if(@copy_type = 1) " +
    " begin " +
    " declare @del_sql  varchar(200) " +
    " declare @mod_code varchar(20) " +
    " declare @copy1sql varchar(100) " +
    " DECLARE list CURSOR FOR " +
    " select mod_code, copy1sql from #tmp where copy1sql is not null " +
    " OPEN list " +
    " FETCH NEXT FROM list INTO @mod_code, @copy1sql " +
    " WHILE @@FETCH_STATUS = 0 " +
    " begin " +
    " set @del_sql = 'delete from #tmp where mod_code = ''' + @mod_code + ''' and (select count(1) from sys_copy where comp_code = ''' + @comp_code + ''' and copy_code = ''' + @copy_code + ''' and (' + @copy1sql + ')) = 0' " +
    " exec(@del_sql) " +
    " FETCH NEXT FROM list INTO @mod_code, @mod_code " +
    " end " +
    " CLOSE list " +
    " DEALLOCATE list " +
    " end " +
    " select mod_code from #tmp order by mod_code " +
    " drop table #tmp ";
      

  2.   

    以前的库是sqlserver现在替为oracle的,请大家帮忙