`
ITCheng
  • 浏览: 77274 次
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle_PL/SQL的基本语法操作

 
阅读更多
declare
   temp_name varchar2(20):='hello world';
   temp_num int :=1;
begin
--set serveroutput on
   dbms_output.put_line(temp_num||'==='||temp_name);
end;

---if
declare
  temp_num int :=&请输入num的值;
begin
  if temp_num>5 then
     dbms_output.put_line('temp_num>5');
  elsif temp_num=5 then
     dbms_output.put_line('temp_num==5');
  else
    dbms_output.put_line('temp_num<5');
  end if;
end;
---case
declare
  score char:='&num';
begin
  case score
    when 'A' then 
    dbms_output.put_line('very good');
    when 'B' then 
    dbms_output.put_line('is good');
    when 'C' then 
    dbms_output.put_line('is normal');
    when 'D' then 
    dbms_output.put_line('is bad');
    else
    dbms_output.put_line('input a value');
  end case; 
end;

--loop
declare
 temp_num int :=1;
begin
  loop
     if(temp_num>=10) then--出循环条件
        exit;
     end if;
     dbms_output.put_line(temp_num);
     temp_num:=temp_num+1;
  end loop;
end;
--while
declare
 temp_num int :=1;
begin
  while temp_num<10 loop--进入循环条件
     dbms_output.put_line(temp_num);
     temp_num:=temp_num+1;
  end loop;
end; 
--for
declare
 temp_num int :=1;
begin
  for temp_num in  reverse 1..10 loop
     dbms_output.put_line(temp_num);
  end loop;
end; 
---动态sql--ddl
declare 
  tbName varchar2(10):='my_tab';
begin
  execute immediate '
   create table '||tbName||' (
     id int,
     name varchar2(10),
     age int
  )';
end;



---绑定参数
declare 
  id int:=1;
  tbName varchar2(10):='my_tab';
  age int:=11;
  uname varchar2(10):='my_tab';
begin
  execute immediate 
  'insert into my_tab values(:1,:abc,:2) returning name into :uname'
  using id,tbName,age returning into uname
  ; 
end;

--execute immediate 字符串 using 输入参数 returning into 返回值参数 
/*

Excute immediate 动态SQL语句 using 绑定参数列表 returning into 输出参数列表;

DML = Data Manipulation Language 数据操作语句[m'nipjulbl] 
DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言 
DCL(Data Control Language):.?是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL 
TCL(Transaction Control Language)事务控制语言 .SAVEPOINT 设置保存点 .ROLLBACK? 回滚 .SET TRANSACTION .

使用动态SQL原因
1.业务:只能在运行时才能确定sql。
2.在开发动态拼装SQL,更灵活,更强大。
3.更容易维护。

*/

----系统exception
declare
  uname varchar2(10);
begin
  select name into uname from users where id=2;
  case '22'
    when '1' then uname:='1';
     when '2' then uname:='2';
  end case;
  dbms_output.put_line(uname);
  exception
   when too_many_rows then
     dbms_output.put_line('查询到多行数据');
   when others then 
     dbms_output.put_line('异常');
end;

---自定义异常
declare
   n int:=&5;
   e exception;--定义
begin
  if(n=5) then
    raise e;--手动抛出
  end if;
  exception--处理
   when e then 
     dbms_output.put_line('自定义异常');
end;
---隐式游标
declare 
  uname varchar2(10);
begin
  select name into uname from users where id=2;
  dbms_output.put_line('查询到'||sql%rowcount);
  if(sql%found)then
   dbms_output.put_line('found is true');
  else
   dbms_output.put_line('found is false');
  end if;
   if(sql%notfound)then
   dbms_output.put_line('notfound is true');
  else
   dbms_output.put_line('notfound is false');
  end if;
   if(sql%isopen)then
   dbms_output.put_line('isopen is true');
  else
   dbms_output.put_line('isopen is false');
  end if;
end;

---%type(字段类型)
---%rowtype
declare 
  uname users.name%type;
  myrow users%rowtype;--行类型
begin
  select name into uname from users where id=2;
  select * into myrow from users where id=2;
  dbms_output.put_line(uname);
  dbms_output.put_line(myrow.name||'==='||myrow.password);
end;

---显示游标
declare
  cursor my_cursor  is
   select * from users;--声明
 myrow users%rowtype;
begin
  open my_cursor;--打开
  if(my_cursor%notfound) then
    dbms_output.put_line('无数据');
  else
    fetch my_cursor into myrow;--取数据
     dbms_output.put_line(myrow.id||'==='||myrow.name||'==='||myrow.password);
  end if; 
  close my_cursor;--关闭
end;
--while循环
declare
  cursor my_cursor  is
   select * from users;--声明
 myrow users%rowtype;
begin
  open my_cursor;--打开
  fetch my_cursor into myrow;--取数据
  while (my_cursor%found) loop
     dbms_output.put_line(myrow.id||'==='||myrow.name||'==='||myrow.password);
     fetch my_cursor into myrow;
  end loop;
  close my_cursor;--关闭
end;
--for循环
declare
  cursor my_cursor  is
   select * from users;--声明
 myrow users%rowtype;
begin
  for myrow in my_cursor loop
     dbms_output.put_line(myrow.id||'==='||myrow.name||'==='||myrow.password);
  end loop;
end;
--loop循环
declare
    cursor my_cursor is select * from info;
    myrow info%rowtype;
    begin
         open my_cursor;
         fetch my_cursor into myrow;
         loop
              if my_cursor%found then
                 dbms_output.put_line(myrow.id);
                 fetch my_cursor into myrow;
              else
                 exit;
              end if;
         end loop;
         close my_cursor;
    end;

 

分享到:
评论

相关推荐

    PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql_pls

    "PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql plsql.ppt"这个压缩包提供了学习PL/SQL的基础材料,通过"第一章 pl-sql介绍.ppt"开始你的学习之旅,逐步探索这个强大而灵活的数据库编程语言。

    ORACLE8 PLSQL程序设计_sql_code.zip_oracle pl/sql_pl sql code_pl/sql_

    Oracle8是PL/SQL的一个早期版本,尽管现在可能已经更新到了更高版本,但了解其基本概念和用法对于理解更现代的Oracle数据库系统仍然至关重要。 "Oracle8 PL/SQL程序设计"是一本专门介绍这个主题的书籍,书中包含了...

    Oracle_PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库系统中的一个核心组成部分,它扩展了SQL的语法,使得数据库管理及应用程序开发更具灵活性和可编程性。PL/SQL融合了SQL查询和控制流语句,提供了处理复杂业务逻辑的能力。 PL/SQL的...

    pl_sql基本语法例子.rar_SQL2569_oracle_pl/sql_plsql增删改查

    本资料主要涵盖了PL/SQL的基本语法以及数据的增删改查操作和视图的使用。 1. PL/SQL基础语法: PL/SQL由三部分组成:声明部分(Declaration)、执行部分(Execution)和异常处理部分(Exception Handling)。声明...

    oracle_oracle_oraclepl/sql_

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和过程性编程语言的控制结构。在"Oracle PL/SQL"这本书中,作者深入浅出地探讨了这一语言的核心概念和实用技巧,尤其适合法语...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    Oracle10_PL/SQL培训教程

    1. **基础语法**:介绍PL/SQL的基本语法,包括如何声明和初始化变量,如何编写简单的SELECT语句,以及如何使用BEGIN-END块来组织代码。 2. **流程控制**:讲解如何使用条件语句(IF-THEN-ELSIF, CASE)和循环语句...

    PL-SQL.rar_pl_pl/sql

    学习PL/SQL不仅需要理解这些基本概念,还需要通过实践来熟悉其语法和使用方式。这个压缩包提供的资源可能涵盖了这些基础内容,并通过实例和练习帮助初学者快速上手。在深入学习PL/SQL的同时,还需要对Oracle数据库的...

    Oracle资料学习PL/SQL必备

    1. **基本语法**:PL/SQL由声明部分、执行部分和异常处理部分组成。声明部分用于定义变量、游标、常量等;执行部分包含SQL语句和PL/SQL控制结构,如循环、条件判断等;异常处理部分用于捕获和处理程序运行时可能出现...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    PL-SQL(chinese).rar_pl_pl sql_pl/sql

    5. PL/SQL语法特性 PL/SQL支持流程控制语句(如IF-THEN-ELSE、CASE)、循环(如WHILE、FOR)、异常处理(如BEGIN-EXCEPTION-END)以及动态SQL。它还允许声明变量、游标、记录类型等,提供了丰富的数据类型,如...

    oracle10_pl/sql

    在Oracle数据库系统中,PL/SQL是核心组成部分之一,允许开发者创建存储过程、函数、触发器、游标和其他数据库对象,以实现复杂的业务逻辑和数据操作。 PL/SQL的全称是Procedural Language/Structured Query ...

    Oracle_function_package_procedure.rar_oracle_pl sql function_pl/

    事务是数据库操作的基本单元,它是一组逻辑上相关的SQL语句。在Oracle中,事务处理确保数据的一致性和完整性。当你开始一个事务(使用BEGIN关键字),执行一系列操作,然后提交(COMMIT)或回滚(ROLLBACK)这些更改...

    PLSQL.rar_pl sql_pl/sql_plsql

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle公司为在其数据库系统中进行结构化查询和过程化编程而设计的一种编程语言。它结合了SQL(结构化查询语言)的数据库查询功能和传统的过程式编程...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **环境搭建与配置**:本书将介绍如何在不同的操作系统环境下安装并配置Oracle 11g数据库环境,以及如何设置PL/SQL Developer或其他开发工具来编写和测试PL/SQL代码。 - **基本语法与结构**:包括数据类型、变量...

    Oracle8 PL/SQL程序设计

    1. **基本语法和数据类型**:了解PL/SQL的基本结构,包括声明变量、常量、游标、表类型等,并熟悉各种内置数据类型,如NUMBER、VARCHAR2、DATE等。 2. **控制结构**:掌握流程控制语句,如IF-THEN-ELSIF、CASE、FOR...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    本书详细讲解了Oracle 11g版本中的PL/SQL语言,这涵盖了从基础语法到高级特性的广泛范围。PL/SQL是Oracle数据库中用于创建存储过程、函数、触发器、包等数据库对象的主要工具。第4版特别关注了在Oracle 11g环境下的...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、数据类型、流程控制语句(如IF-THEN-ELSIF,FOR循环,WHILE循环)、异常处理(BEGIN-EXCEPTION-END结构)等。 2. **函数与过程**:如何定义和调用用户自定义的...

Global site tag (gtag.js) - Google Analytics