`
Vksnail
  • 浏览: 43501 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

PL/SQL编程基础及使用

阅读更多
i在自己的电脑上装的Oracle9i,在安装的时候我用的名字是vinky,密码统一是xxx。呵呵,还算顺利,总于成功了,

在用PL/SQL IDE登录的时候我用的名字为vinky,MM:xxx 进去后,在执行 select * from emp

发现报错了,说什么视图或者表没有找到!把俺在这里花了很多时间。注意:一定要在连接数据库时,名字要为scott,MM:tiger。这样就行了。(算是本人的经验,也算是开篇的废话了)

下面是俺操作的例子:

1.%type 做类型的匹配

   DECLARE
  v_empno emp.empno%TYPE;
  v_ename emp.ename%TYPE;
  v_sal emp.sal%TYPE;
BEGIN
  v_empno :='7566';
  SELECT ename,sal INTO v_ename,v_sal
  FROM emp e
  WHERE e.empno=v_empno;
  dbms_output.put_line(v_ename||','||v_sal);
END;

2.得到变的具体结构

在命令窗口下输入: desc emp;  就OK了!

3.使用%rowtype (列名个数较多时)

DECLARE
  v_emp_row emp%ROWTYPE;
BEGIN
   SELECT * INTO v_emp_row
   FROM emp e WHERE e.empno=7788;
 
   dbms_output.put_line(v_emp_row.sal||','||v_emp_row.ename);
END;

4.if语句

DECLARE
  v_sal emp.sal%TYPE;
BEGIN
  SELECT sal INTO v_sal
  FROM emp e
  WHERE e.empno=7566;
  IF
  (v_sal<=2000) THEN
    v_sal :=v_sal+200;
  ELSE
    v_sal :=v_sal+200;
  END IF;
  UPDATE emp e SET e.sal=v_sal
  WHERE e.empno=7566;
  COMMIT;
   dbms_output.put_line(v_sal);
END;

5.case when..then..end case分支1

DECLARE
  v_sal NUMBER;
  v_gz VARCHAR2(8);
BEGIN
  v_sal:=&请输入您个工资;
  CASE
  WHEN v_sal<=2000 THEN v_gz:='低工资';
  WHEN v_sal>2000 AND v_sal<=6000 THEN v_gz:='中工资';
  WHEN v_sal>6000 THEN v_gz:='高工资';
  END CASE;
  dbms_output.put_line(v_sal||'是'||v_gz);
END;

6.case(条件)when..then..end if语句分支2

DECLARE
  v_sal NUMBER;
  v_gz VARCHAR2(8);
BEGIN
   v_sal:=&请输入您个工资;
   CASE v_sal
   WHEN 2000 THEN v_gz:='低';
   WHEN 6000 THEN v_gz:='高';
   END CASE;
   dbms_output.put_line(v_sal||'是'||v_gz);
END;

7.循环语句1(loop ..end loop)

DECLARE
v_count NUMBER;
v_a NUMBER;
BEGIN
  v_count :=&输入循环次数;
  v_a:=1;
  LOOP
    dbms_output.put_line('TMD是的SB!');
    v_a :=v_a+1;
    IF(v_a>v_count) THEN
      EXIT;
    END IF;
  END LOOP;
END;

8.循环语句2(while 条件 loop...end loop)

DECLARE
  v_count NUMBER;
  v_a NUMBER;
BEGIN
  v_a:=1;
  WHILE(v_a<=10)
  LOOP
    dbms_output.put_line('TMD真牛X!');
    v_a:=v_a+1;
  END LOOP;
END;

9.循环语句3(for..in..loop..end loop)

DECLARE
  v_count NUMBER;
  v_a NUMBER;
BEGIN
  v_a:=1;
  FOR v_a IN 1..10 LOOP
  dbms_output.put_line('TMD真牛X!');

END LOOP;
END;

10.异常分类

1)系统产生的错误

2)由用户行为导致的错误

3)由应用程序发出给用户的警告

11.捕获异常(共六个版本,我就这里举两个列子)

1)捕获指定异常信息

DECLARE
  v_a NUMBER;
  v_b NUMBER;
  v_c NUMBER;
  e_my_error EXCEPTION;
  PRAGMA EXCEPTION_INIT(e_my_error,-1476);
BEGIN
  v_a:=8;
  v_b:=0;
  v_c:=v_a/v_b;
  dbms_output.put_line(v_c);
  EXCEPTION
    WHEN e_my_error THEN
      dbms_output.put_line('除数不能为0');
    WHEN OTHERS THEN
       dbms_output.put_line(SQLCODE||','||SQLERRM);
END;

2)自定义异常

DECLARE
  v_a NUMBER;
  v_b NUMBER;
  v_c NUMBER;
BEGIN
  v_a:=10;
  v_b:=5;
  IF(v_a>v_b)THEN
    raise_application_error(-20009,'值太小');
    END IF;
    v_c:=v_a/v_b;
    dbms_output.put_line(v_c);
END;

11.同义词(可以理解为别名)

例子:create synonym my_tab for emp;

分析:相对于用my_tab别名 来引用另外一张表emp

及select * from my_tal == select * from emp;

而public 一般会报错、所有一般不用public好。

理解:

在oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,遇到这种情况,我们该怎么办呢?创建个同义词吧!这样我们就可以直接使用同义词来操作表了。是不是很方便、爽啊!




分享到:
评论

相关推荐

    PL/SQL编程基础知识

    ### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...

    第16章Pl/sql编程基础

    pl/sql编程基础教程,内容丰富,适合初学者学习。

    PL/SQL基础编程,实例自写

    ### PL/SQL基础编程知识点详解 #### 一、PL/SQL概述 PL/SQL,全称为Procedural Language for SQL,是Oracle数据库特有的高级程序设计语言。它结合了SQL的数据处理能力和传统编程语言的控制结构,使开发者能够在...

    PL/SQL编程(电子版)

    【PL/SQL编程】是Oracle数据库中用于数据库管理和应用程序开发的一种高级过程语言,它结合了SQL查询语言的威力和高级编程语言的灵活性。本章详细介绍了PL/SQL的基础知识,帮助初学者快速掌握该语言。 **4.1 PL/SQL...

    pl/sql最新中文手册

    1. **PL/SQL基础**:手册可能会从基础开始,介绍PL/SQL的基本结构,包括声明变量、常量、游标、记录类型等。还会讲解如何编写存储过程、函数和触发器。 2. **控制流程语句**:这包括条件判断(IF-THEN-ELSIF-ELSE)...

    Oracle PL/SQL编程基础

    ### Oracle PL/SQL编程基础详解 #### 一、PL/SQL概述 PL/SQL,即Procedural Language for SQL,是Oracle数据库专有的扩展性语言,用于增强SQL的功能,使其具备编程语言的能力。通过PL/SQL,开发者可以编写复杂的...

    Oracle资料学习PL/SQL必备

    在提供的"PLSQL基础.pdf"文件中,你将可能找到以上各点的详细讲解,从基础概念到实际应用,逐步引导你掌握Oracle数据库的PL/SQL编程。通过深入学习和实践,你将能够编写出高效、可靠的PL/SQL代码,有效管理Oracle...

    pl/sql 编程基础

    ### PL/SQL编程基础知识点详解 #### 一、PL/SQL概述 PL/SQL(Procedural Language for SQL)是一种过程化SQL扩展语言,专为Oracle数据库设计,它结合了SQL的强大数据处理能力和传统程序设计语言的过程化控制能力。...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    1. **基础语法**:PL/SQL是过程化SQL,它包含声明部分、执行部分和异常处理部分。声明部分用于定义变量、常量和游标;执行部分包含了SQL语句和流程控制结构,如循环、条件判断等;异常处理部分则用于捕获和处理运行...

    oracle实验三PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库管理系统中的重要组成部分,它是一种过程化语言,允许开发者编写复杂的数据库应用程序。在本次实验中,我们将重点学习PL/SQL的基本语法、控制结构、复合数据类型以及异常处理技术。 ...

    精通Oracle 10g PL/SQL编程

    PL/SOL是Oracle特有的编程语言,它不仅具有过程编程语言的基本特征(循环、条件分支等),而且还...本书不仅适合于PL/SQL初学者,而且也适合于有经验的PL/SQL编程人员,本书还可以作为Oracle培训班的教材或者辅助材料。

    ORACLE PL/SQL从入门到精通

    循环语句是PL/SQL编程中用来重复执行一组语句的结构,包括loop、while、for三种形式,它们各自有不同的使用场景和语法。 分支条件语句在PL/SQL中用来根据不同的条件执行不同的代码分支,主要包括CASE表达式和if-...

    精通oracle10g PL/SQL编程

    本书《精通Oracle10g PL/SQL编程》为读者提供了一个系统性的学习路径,从基础知识到高级应用,从具体技巧到最佳实践,涵盖了PL/SQL编程的方方面面。通过本书的学习,读者将能够有效地提高Oracle数据库编程的效率和...

    精通pl/sql

    《精通PL/SQL》这本书是针对Oracle数据库系统中PL/SQL编程语言的深度解析与实践指南,主要面向希望提升在Oracle环境下使用PL/SQL技能的专业人士。PL/SQL,全称为Procedural Language/Structured Query Language,是...

    PL/SQL 核心基础代码

    本资源"PL/SQL 核心基础代码"是针对PL/SQL初学者的一个宝贵资料集合,包含了一系列核心基础部分的代码实例,旨在帮助学习者更好地理解和掌握PL/SQL编程。 在PL/SQL中,主要涉及以下几个关键知识点: 1. **声明变量...

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

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

    #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL查询的基础上添加控制流语句、变量定义、错误处理等特性...

    oracle实验五 PL/SQL编程

    本次实验旨在使学习者深入了解PL/SQL编程的基础知识与实际应用。具体目标包括: 1. **掌握PL/SQL的数据类型和基本语法**:理解PL/SQL中不同数据类型的定义与使用方法,包括字符串类型等。 2. **熟悉控制结构与游标...

    精通oracle 10g pl/sql编程

    总而言之,《精通Oracle 10g PL/SQL编程》是一本面向数据库开发人员和DBA的专业书籍,它不仅涵盖了PL/SQL编程的基本概念和语法,还深入介绍了如何在Oracle 10g这个具体版本的数据库管理系统中高效使用PL/SQL,从而...

Global site tag (gtag.js) - Google Analytics