`
mikixiyou
  • 浏览: 1099035 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353166
社区版块
存档分类
最新评论

使用plsql开发的计算器程序

阅读更多

这是一个使用PL SQL开发的计算器程序,实现基本的数学运算。根据提供的数组,展现输入过程,计算出结果。

这个在stanford iphone2011教程的作业的另外一种实现方法。但那个是需要用obj-c实现,我这个是用pl sql实现。

 

这个存储过程中,使用了collection的复杂操作实现计算数据和计算符号的处理,使用递归实现计算的反复调用。

实现 加减程序正弦余弦N次方和N次方根的计算,和输入过程描述。

 

Version 1.1

 

create or replace
PROCEDURE run_science_program_v2
AS
type typ_program
IS
  TABLE OF VARCHAR2(100);
type typ_progs
IS
  TABLE OF typ_program;
type typ_opers
IS
  TABLE OF VARCHAR2(10);
  c_operations_1 typ_opers := typ_opers('+', '-');
  c_operations_2 typ_opers := typ_opers('/', '*');
  c_operations_3 typ_opers := typ_opers('power', 'sqrt-n');
  c_operations_4 typ_opers := typ_opers('sin', 'cos', 'tan', 'sqrt');
  v_trail typ_program;
  v_program typ_program := typ_program();
  v_progs typ_progs     := typ_progs();
FUNCTION exist_operation(
    p_operation typ_opers,
    p_input VARCHAR2)
  RETURN BOOLEAN
IS
  result BOOLEAN;
BEGIN
  result := false;
  FOR i  IN p_operation.first .. p_operation.last
  LOOP
    IF (p_operation(i) = p_input) THEN
      result          := true;
      EXIT;
    END IF;
  END LOOP;
  RETURN result;
END;
FUNCTION calculator(
    p_head FLOAT,
    p_operation VARCHAR2,
    p_tail FLOAT)
  RETURN FLOAT
IS
  Result FLOAT;
BEGIN
  result := 0;
  CASE
  WHEN p_operation = '+' THEN
    result        := p_head + p_tail;
  WHEN p_operation = '-' THEN
    result        := p_head - p_tail;
  WHEN p_operation = '*' THEN
    result        := p_head * p_tail;
  WHEN p_operation = '/' THEN
    result        := p_head / p_tail;
  WHEN p_operation = 'power' THEN
    result        := power(p_head, p_tail);
  WHEN p_operation = 'sqrt' THEN
    result        := sqrt(p_tail);
  WHEN p_operation = 'sqrt-n' THEN
    result        := power(p_head, 1 / p_tail);
  WHEN p_operation = 'sin' THEN
    result        := sin(p_tail);
  WHEN p_operation = 'cos' THEN
    result        := cos(p_tail);
  WHEN p_operation = 'tan' THEN
    result        := cos(p_tail);
  END CASE;
  RETURN(Result);
END;
FUNCTION program(
    p_program typ_program)
  RETURN typ_program
IS
  v_program typ_program;
  v_head FLOAT;
  v_operation VARCHAR2(10);
  v_tail FLOAT;
BEGIN
  v_program := p_program;
  IF (v_program.exists(v_program.count - 1)) THEN
    IF (v_program(v_program.count      - 1) IN ('+', '-', '*', '/', 'power',
      'sqrt-n')) THEN
      v_head      := v_program(v_program.count - 2);
      v_operation := v_program(v_program.count - 1);
      v_tail      := v_program(v_program.count);
      v_program.trim(3);
      v_program.extend(1);
      v_program(v_program.count)          := calculator(v_head, v_operation, v_tail);
    elsif (v_program(v_program.count - 1) IN ('sin', 'cos', 'tan', 'sqrt'))
      THEN
      v_head      := 0;
      v_operation := v_program(v_program.count - 1);
      v_tail      := v_program(v_program.count);
      v_program.trim(2);
      v_program.extend(1);
      v_program(v_program.count) := calculator(v_head, v_operation, v_tail);
    END IF;
    IF (v_program.exists(v_program.count - 1)) THEN
      v_program := program(v_program);
    END IF;
  END IF;
  RETURN(v_program);
END;
FUNCTION run_program(
    p_trail typ_program)
  RETURN FLOAT
AS
  result FLOAT;
  v_trail typ_program;
  v_input VARCHAR2(300);
BEGIN
  result  := 0.0;
  v_trail := p_trail;
  v_progs.delete;
  v_program.delete;
  FOR i IN v_trail.first .. v_trail.last
  LOOP
    v_input := v_trail(i);
    CASE
    WHEN
      (
        v_input = '('
      )
      THEN
      v_progs.extend(1); --增加programs的元素program
      v_progs(v_progs.count) := v_program;
      v_program.delete; --删除v_program上所有元素
    WHEN
      (
        v_input = ')'
      )
      THEN
      v_program := program(v_program);
      v_progs(v_progs.count).extend(1);
      v_progs(v_progs.count)(v_progs(v_progs.count).count) := v_program(1);
      v_program                                            := v_progs(
      v_progs.count);
      v_progs.trim(1);
    WHEN
      (
        v_input = '='
      )
      THEN
      v_program := program(v_program);
    WHEN
      (
        exist_operation(c_operations_1, v_input)
      )
      THEN
      v_program := program(v_program);
      v_program.extend(1);
      v_program(v_program.count) := v_input;
    WHEN
      (
        exist_operation(c_operations_2, v_input)
      )
      THEN
      IF (v_program.exists(v_program.count                            - 1)) THEN
        IF (exist_operation(c_operations_2, v_program(v_program.count - 1)) OR
          exist_operation(c_operations_3, v_program(v_program.count   - 1)) OR
          exist_operation(c_operations_4, v_program(v_program.count   - 1)))
          THEN
          v_program := program(v_program);
        END IF;
      END IF;
      v_program.extend(1);
      v_program(v_program.count) := v_input;
    WHEN
      (
        exist_operation(c_operations_3, v_input) OR exist_operation(
        c_operations_4, v_input)
      )
      THEN
      IF (v_program.exists(v_program.count                            - 1)) THEN
        IF (exist_operation(c_operations_3, v_program(v_program.count - 1)) OR
          exist_operation(c_operations_4, v_program(v_program.count   - 1)))
          THEN
          v_program := program(v_program);
        END IF;
      END IF;
      v_program.extend(1);
      v_program(v_program.count) := v_input;
    ELSE
      /*case when else */
      v_program.extend(1);
      v_program(v_program.count) := v_input;
    END CASE;
  END LOOP;
  result := v_program(1);
  RETURN(result);
END;
FUNCTION desc_program(
    p_trail typ_program)
  RETURN VARCHAR2
AS
  result VARCHAR2(4000);
type t_boolean
IS
  TABLE OF BOOLEAN;
  v_trail typ_program;
  v_input            VARCHAR2(300);
  v_operation_change BOOLEAN;
  v_oper_changes t_boolean := t_boolean();
BEGIN
  result             := '';
  v_operation_change := false;
  v_trail            := p_trail;
  v_progs.delete;
  v_program.delete;
  FOR i IN v_trail.first .. v_trail.last
  LOOP
    v_input := v_trail(i);
    CASE
    WHEN
      (
        v_input = '('
      )
      THEN
      v_progs.extend(1); --增加programs的元素program
      v_progs(v_progs.count) := v_program;
      v_program.delete; --删除v_program上所有元素
      v_program.extend(1);
      v_program(v_program.count) := v_input;
      v_oper_changes.extend(1);
      v_oper_changes(v_oper_changes.count) := v_operation_change;
      v_operation_change                   := false;
    WHEN
      (
        v_input = ')'
      )
      THEN
      v_program.extend(1);
      v_program(v_program.count) := v_input;
      result                     := '';
      FOR j                      IN v_program.first .. v_program.last
      LOOP
        result := result || v_program(j);
      END LOOP;
      v_operation_change := v_oper_changes(v_oper_changes.count);
      v_oper_changes.trim(1);
      IF (v_operation_change) THEN
        v_operation_change := false;
        result             := '(1/' || result || ')';
      END IF;
      v_progs(v_progs.count).extend(1);
      v_progs(v_progs.count)(v_progs(v_progs.count).count) := result;
      v_program                                            := v_progs(
      v_progs.count);
      v_progs.trim(1);
    WHEN
      (
        v_input = 'sqrt-n'
      )
      THEN
      v_program.extend(1);
      v_input                    := '^';
      v_program(v_program.count) := v_input;
      v_operation_change         := true;
    ELSE
      /*case when else */
      IF (v_operation_change) THEN
        v_operation_change := false;
        v_program.extend(1);
        v_program(v_program.count) := '(1/' || v_input || ')';
      ELSE
        v_program.extend(1);
        IF (v_input = 'power' OR v_input = 'sqrt-n') THEN
          v_input  := '^';
        END IF;
        v_program(v_program.count) := v_input;
      END IF;
    END CASE;
  END LOOP;
  result := '';
  FOR j  IN v_program.first .. v_program.last
  LOOP
    result := result || v_program(j);
  END LOOP;
  RETURN(result);
END;
FUNCTION chinese_number(
    p_input FLOAT)
  RETURN VARCHAR2
AS
  /*
  created by wfg on 2012-7-27
  It is used to change Arabic numbers to Chinese big numbers.
  */
type typ_money
IS
  TABLE OF VARCHAR2(20);
  c_numbers typ_money := typ_money('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌',
  '玖');
  c_unit typ_money := typ_money('分', '角', '圆', '拾', '佰', '仟', '万', '拾', '佰',
  '仟', '亿', '拾', '佰', '仟', '兆', '拾', '佰', '仟');
  v_array_money typ_money := typ_money();
  chinese_number   VARCHAR2(30);
  result           VARCHAR2(1000);
  v_number         INTEGER;
  v_number_element INTEGER;
  i                INT;
BEGIN
  IF (p_input >= power(10, 16)) THEN
    result    := '超出计算范围';
    RETURN result;
  END IF;
  v_number := ROUND(p_input * 100);
  i        := 1;
  v_array_money.extend(1);
  v_array_money(v_array_money.count) := '整';
  WHILE v_number                      > 0
  LOOP
    v_number_element    := mod(v_number, 10);
    IF (v_number_element = 0) THEN
      IF i              IN (3, 7, 11, 15) THEN
        chinese_number  := c_unit(i);
      ELSE
        chinese_number := c_numbers(v_number_element + 1);
      END IF;
    ELSE
      chinese_number := c_numbers(v_number_element + 1) || c_unit(i);
    END IF;
    CASE
    WHEN chinese_number                           = '零' THEN
      IF (v_array_money(v_array_money.count) NOT IN ('整', '零', '圆', '万', '亿',
        '兆')) THEN
        v_array_money.extend(1);
        v_array_money(v_array_money.count) := chinese_number;
      END IF;
    WHEN chinese_number LIKE '%亿' THEN
      IF (v_array_money(v_array_money.count) IN ('万')) THEN
        v_array_money(v_array_money.count)   := chinese_number;
      ELSE
        v_array_money.extend(1);
        v_array_money(v_array_money.count) := chinese_number;
      END IF;
    WHEN chinese_number LIKE '%兆' THEN
      IF (v_array_money(v_array_money.count) IN ('万', '亿')) THEN
        v_array_money(v_array_money.count)   := chinese_number;
      ELSE
        v_array_money.extend(1);
        v_array_money(v_array_money.count) := chinese_number;
      END IF;
    ELSE
      v_array_money.extend(1);
      v_array_money(v_array_money.count) := chinese_number;
    END CASE;
    v_number := floor(v_number / 10);
    i        := i              + 1;
  END LOOP;
  FOR i IN v_array_money.first .. v_array_money.last
  LOOP
    result := v_array_money(i) || result;
  END LOOP;
  RETURN result;
END;
BEGIN
  v_trail := typ_program('(', '2', '+', '3', ')', '*', '4', 'power', '(', '1',
  '+', '8', 'sqrt-n', '(', '2', '+', '2', ')', '+', '1', ')', '-', '10', '=');
  dbms_output.put('This programStack ' || (desc_program(v_trail)));
  dbms_output.put_line(' ' || run_program(v_trail));
  dbms_output.put_line('' || chinese_number(run_program(v_trail)));
END run_science_program_v2;
 

 

 

Version 1.0

 

create or replace procedure run_science_program as
  type typ_program is table of varchar2(100);
  type typ_progs is table of typ_program;
  type typ_opers is table of varchar2(10);
  c_operations_1 typ_opers := typ_opers('+', '-');
  c_operations_2 typ_opers := typ_opers('/', '*');
  c_operations_3 typ_opers := typ_opers('power', 'sqrt-n');
  c_operations_4 typ_opers := typ_opers('sin',
                                                  'cos',
                                                  'tan',
                                                  'sqrt');

  v_trail   typ_program;
  v_program typ_program := typ_program();
  v_progs   typ_progs := typ_progs();

  function exist_operation(p_operation typ_opers, p_input varchar2)
    return boolean is
    result boolean;
  begin
    result := false;
  
    for i in p_operation.first .. p_operation.last loop
      if (p_operation(i) = p_input) then
        result := true;
        exit;
      end if;
    end loop;
  
    return result;
  end;

  function calculator(p_head float, p_operation varchar2, p_tail float)
    return float is
    Result float;
  begin
    result := 0;
    case
      when p_operation = '+' then
        result := p_head + p_tail;
      when p_operation = '-' then
        result := p_head - p_tail;
      when p_operation = '*' then
        result := p_head * p_tail;
      when p_operation = '/' then
        result := p_head / p_tail;
      when p_operation = 'power' then
        result := power(p_head, p_tail);
      when p_operation = 'sqrt' then
        result := sqrt(p_tail);
      when p_operation = 'sqrt-n' then
        result := power(p_head, 1 / p_tail);
      when p_operation = 'sin' then
        result := sin(p_tail);
      when p_operation = 'cos' then
        result := cos(p_tail);
      when p_operation = 'tan' then
        result := cos(p_tail);
      
    end case;
  
    return(Result);
  end;

  function program(p_program typ_program) return typ_program is
    v_program   typ_program;
    v_head      float;
    v_operation varchar2(10);
    v_tail      float;
  begin
    v_program := p_program;
  
    if (v_program.exists(v_program.count - 1)) then
      if (v_program(v_program.count - 1) in
         ('+', '-', '*', '/', 'power', 'sqrt-n')) then
        v_head      := v_program(v_program.count - 2);
        v_operation := v_program(v_program.count - 1);
        v_tail      := v_program(v_program.count);
        v_program.trim(3);
        v_program.extend(1);
        v_program(v_program.count) := calculator(v_head,
                                                 v_operation,
                                                 v_tail);
      
      elsif (v_program(v_program.count - 1) in
            ('sin', 'cos', 'tan', 'sqrt')) then
        v_head      := 0;
        v_operation := v_program(v_program.count - 1);
        v_tail      := v_program(v_program.count);
        v_program.trim(2);
        v_program.extend(1);
        v_program(v_program.count) := calculator(v_head,
                                                 v_operation,
                                                 v_tail);
      
      end if;
    
      if (v_program.exists(v_program.count - 1)) then
        v_program := program(v_program);
      end if;
    
    end if;
  
    return(v_program);
  end;

  function run_program(p_trail typ_program) return float as
    result  float;
    v_trail typ_program;
    v_input varchar2(300);
  begin
    result  := 0.0;
    v_trail := p_trail;
    v_progs.delete;
    v_program.delete;
  
    for i in v_trail.first .. v_trail.last loop
      v_input := v_trail(i);
    
      case
        when (v_input = '(') then
          v_progs.extend(1); --增加programs的元素program
          v_progs(v_progs.count) := v_program;
        
          v_program.delete; --删除v_program上所有元素
      
        when (v_input = ')') then
        
          v_program := program(v_program);
        
          v_progs(v_progs.count).extend(1);
          v_progs(v_progs.count)(v_progs(v_progs.count).count) := v_program(1);
          v_program := v_progs(v_progs.count);
        
          v_progs.trim(1);
        
        when (v_input = '=') then
          v_program := program(v_program);
        
        when (exist_operation(c_operations_1, v_input)) then
        
          v_program := program(v_program);
        
          v_program.extend(1);
          v_program(v_program.count) := v_input;
        
        when (exist_operation(c_operations_2, v_input)) then
          if (v_program.exists(v_program.count - 1)) then
            if (exist_operation(c_operations_2,
                                v_program(v_program.count - 1)) or
               exist_operation(c_operations_3,
                                v_program(v_program.count - 1)) or
               exist_operation(c_operations_4,
                                v_program(v_program.count - 1))) then
              v_program := program(v_program);
            end if;
          end if;
          v_program.extend(1);
          v_program(v_program.count) := v_input;
        
        when (exist_operation(c_operations_3, v_input) or
             exist_operation(c_operations_4, v_input)) then
          if (v_program.exists(v_program.count - 1)) then
            if (exist_operation(c_operations_3,
                                v_program(v_program.count - 1)) or
               exist_operation(c_operations_4,
                                v_program(v_program.count - 1))) then
              v_program := program(v_program);
            end if;
          end if;
          v_program.extend(1);
          v_program(v_program.count) := v_input;
        
        else
          /*case when else */
          v_program.extend(1);
          v_program(v_program.count) := v_input;
        
      end case;
    
    end loop;
  
    result := v_program(1);
  
    return(result);
  end;

  function desc_program(p_trail typ_program) return varchar2 as
    result varchar2(4000);
    type t_boolean is table of boolean;
    v_trail            typ_program;
    v_input            varchar2(300);
    v_operation_change BOOLEAN;
    v_oper_changes     t_boolean := t_boolean();
  begin
    result             := '';
    v_operation_change := false;
    v_trail            := p_trail;
    v_progs.delete;
    v_program.delete;
  
    for i in v_trail.first .. v_trail.last loop
      v_input := v_trail(i);
    
      case
        when (v_input = '(') then
        
          v_progs.extend(1); --增加programs的元素program
          v_progs(v_progs.count) := v_program;
          v_program.delete; --删除v_program上所有元素
        
          v_program.extend(1);
          v_program(v_program.count) := v_input;
        
          v_oper_changes.extend(1);
          v_oper_changes(v_oper_changes.count) := v_operation_change;
          v_operation_change := false;
        
        when (v_input = ')') then
          v_program.extend(1);
          v_program(v_program.count) := v_input;
        
          v_operation_change := v_oper_changes(v_oper_changes.count);
          v_oper_changes.trim(1);
          if (v_operation_change) then
            v_operation_change := false;
            v_program.extend(1);
            v_program(v_program.count) := ')';
          end if;
        
          for j in v_program.first .. v_program.last loop
            result := result || v_program(j);
          end loop;
          v_progs(v_progs.count).extend(1);
          v_progs(v_progs.count)(v_progs(v_progs.count).count) := result;
        
          v_program := v_progs(v_progs.count);
        
          v_progs.trim(1);
          result := '';
        
        when (exist_operation(c_operations_3, v_input)) then
        
          v_program(v_program.count) := v_input || '(' ||
                                        v_program(v_program.count) || ',';
          v_operation_change := true;
        
        else
          /*case when else */
          if (v_operation_change) then
            v_operation_change := false;
            v_program.extend(1);
            v_program(v_program.count) := v_input;
            v_program.extend(1);
            v_program(v_program.count) := ')';
          
          else
          
            v_program.extend(1);
            v_program(v_program.count) := v_input;
          end if;
      end case;
    
    end loop;
  
    for j in v_program.first .. v_program.last loop
      result := result || v_program(j);
    end loop;
  
    return(result);
  end;

begin
  /*
  v_trail := typ_program('5',
                         '+',
                         '9',
                         'power',
                         '(',
                         '2',
                         '*',
                         '2',
                         ')',
                         '+',
                         '2',
                         '*',
                         '(',
                         '30',
                         '+',
                         '10',
                         ')',
                         '-',
                         '10',
                         '=');
  */
  v_trail := typ_program('(',
                         '2',
                         '+',
                         '3',
                         ')',
                         '*',
                         '4',
                         'power',
                         '(',
                         '1',
                         '+',
                         'sqrt',
                         '(',
                         '2',
                         '+',
                         '2',
                         ')',
                         '+',
                         '1',
                         ')',
                         '-',
                         '10',
                         '=');

  dbms_output.put('This programStack ' || desc_program(v_trail));

  dbms_output.put_line(' ' || run_program(v_trail));

end run_science_program;
 

 

0
7
分享到:
评论

相关推荐

    PLSQL应用程序开发

    ### PLSQL应用程序开发知识点概述 #### 一、PL/SQL简介及特点 PL/SQL (Procedural Language for SQL) 是 Oracle 数据库的一种内置编程语言,它结合了 SQL 的数据处理能力和传统编程语言的过程控制能力。自 Oracle 6...

    EBS环境下PLSQL开发

    EBS环境下PLSQL开发 本文主要介绍了EBS环境下PLSQL开发的相关知识点,包括并发请求的基础、EBS下的请求开发基础、调试和跟踪模式、常用的数据库包、EBS环境下PLSQL请求开发模版等。 并发请求(SRS)基础 并发请求是...

    plsql开发小结

    PLSQL,全称为Procedural Language/SQL,是Oracle数据库提供的一个编程语言,它结合了SQL的查询功能和过程性编程语言的特点,用于编写数据库应用程序。在Oracle数据库提高和开发中,掌握PLSQL是非常重要的。以下是...

    PLSQL8 安装程序

    PLSQL Developer是一款强大的Oracle数据库开发工具,主要用于编写、调试、执行和管理PL/SQL代码。在你的提供的信息中,我们关注的是"PLSQL8 安装程序",它显然是PLSQL Developer的一个特定版本,可能是第8版。接下来...

    PLSQL开发工具.zip

    - PLSQL Developer是一款功能丰富的集成开发环境(IDE),它支持Oracle数据库的开发工作,包括创建、编辑、调试和运行PL/SQL程序。 - 特性:它提供了一个用户友好的界面,支持语法高亮、自动完成、错误检查、...

    不安装oracle使用plsql

    标题中的“不安装oracle使用plsql”意味着要在没有Oracle数据库客户端的情况下使用PL/SQL Developer这一工具。这通常通过Oracle的Instant Client实现,该组件提供了一种轻量级的解决方案,允许用户连接到Oracle...

    PLSQL程序优化和性能分析方法

    在编写PLSQL程序时,开发者需要考虑到程序的执行效率、内存使用率、IO访问频率等多方面的因素,以确保程序的性能达到最佳状态。 本文档将从以下几个方面来探讨PLSQL程序优化和性能分析方法: 1. 导致性能问题的...

    plsql开发工具

    PLSQL Developer是一款强大的Oracle数据库开发工具,专为PL/SQL编程设计,提供了全面的功能来协助开发者进行数据库管理和应用程序开发。这款工具的特点在于其便捷性,无需安装,只需解压缩后即可运行,大大简化了...

    使用PLSQL 创建Oracle数据库用户并设置权限

    2. PLSQL 开发指南: PLSQL 开发指南提供了详细的 PLSQL 编程指南,包括存储过程、函数和触发器等。 3. Oracle 数据库管理员指南: Oracle 数据库管理员指南提供了详细的数据库管理指南,包括用户管理、权限管理和表...

    PLSQL1204 安装程序32位和64位 带注册码

    PLSQL Developer是一款...总的来说,PLSQL Developer 1204版提供了稳定且功能丰富的Oracle数据库开发环境,结合提供的注册码,用户可以免费、合法地使用该软件。请确保在使用过程中遵守软件的许可协议,避免侵权行为。

    PLSQL开发报表入门

    erp报表中大部分是使用plsql经行开发的,PLSQL开发报表入门

    PLSQL使用指南

    标签“PLSQL 使用指南”意味着本指南将提供从基础到高级的PLSQL编程知识,覆盖PLSQL的基本语法、程序结构、高级特性如触发器、存储过程和函数的创建与管理,以及如何优化PLSQL代码性能等内容。 接下来将具体展开...

    PLSQL Developer14用户指南

    PLSQL Developer 14提供了一个友好的集成开发环境(IDE),使得用户可以轻松地编写、编译和调试PL/SQL程序。用户可以创建新的程序、保存程序、修改程序、编译程序等。 创建程序 创建程序是PLSQL Developer 14的...

    PLSQL程序设计(全)

    PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全) PLSQL程序设计(全)

    plsqldeveloper+中文应用程序

    在这个“plsqldeveloper+中文应用程序”中,我们看到它已经包含了中文语言支持,这意味着中国用户可以更方便地使用这款软件,无需再进行额外的汉化工作。 1. PL/SQL Developer的功能: - **源代码编辑器**:提供...

    PLSQL Developer8.0.2汉化程序

    总的来说,PLSQL Developer 8.0.2的汉化程序是为中国用户量身定制的,旨在提供一个更加友好和熟悉的环境,以提升在Oracle数据库管理与开发过程中的体验。在使用过程中,如果遇到任何问题,可以通过查阅官方文档或...

    使用PLSQL创建Oracle数据库User用户并设置权限, 创建表

    使用PLSQL创建Oracle数据库User用户并设置权限 主要演示了如何使用 PLSQL 创建一个 User 用户, 并使之具有创建表、修改表、访问表的权限。解决了 使用自定义用户创建表时出现的 没有表空间的访问权限的问题。

Global site tag (gtag.js) - Google Analytics