`
wanghuanqiu
  • 浏览: 110054 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

SQL编程(一)

    博客分类:
  • SQL
阅读更多
最近准备学习一下SQL编程,通过ORACLE10g pl/sql 编程,参照其写的一些实例,欢迎大家一起学习

准备工作:oracle10g,pl/sql developer 
创建表 emp 和 dept
CREATE OR REPLACE TABLE emp(
empno   VARCHAR2(32),
ename   VARCHAR2(32),
sal         NUMBER(7,2),
deptno  VARCHAR2(32),
constraint emp_key primary key(empno)
);

那么就开始了 直接上例子了:

--pl/sql实例
DECLARE--声明变量
v_ename VARCHAR(5);
BEGIN
SELECT ename INTO v_ename FROM emp--INTO为游标,必须要加
WHERE empno='&no';--一个输入no
dbms_output.put_line('输出'||v_ename);--dbms_output为系统表,\\为连接符
EXCEPTION --抛出例外 
 WHEN NO_DATA_FOUND THEN
    dbms_output.put_line('输入有误');
END;
--命名块    跟匿名块差不多,多一个<<>>
<<outer>>
DECLARE
v_deptno VARCHAR2(5);
v_name   VARCHAR2(10);
BEGIN
<<inner>>
  BEGIN
    SELECT dno INTO v_deptno FROM emp 
    WHERE lower(ename)=lower('&name')
  END;
  SELECT dname INTO v_name FROM emp
  WHERE deptno = v_deptno;
  dbms_output.put_line('名称'||v_name);
END;
--创建过程
CREATE OR REPLACE PROCEDURE update_sals(name varchar2, newsal number)
AS
BEGIN
  UPDATE emp SET sal = newsal
  WHERE  lower(ename) = lower(name);
END;
--调用过程
call update_sals('fei',7000);
--创建函数  必须有一个RETURN 语句在头部
CREATE OR REPLACE FUNCTION annual_income(name varchar2)
RETURN NUMBER AS
   annual_salary  NUMBER(7,2);
BEGIN
  SELECT sal*12 + nvl(comm,0) INTO annual_salary from emp
  WHERE lower(ename) = lower(name);
  RETURN annual_salary;
END;
--调用函数
--SQL命令行中
SQL->var sal NUMBER
SQL->call annual_income('fei') INTO :sal;
SQL->print sal;
--创建包 逻辑组合相关的函数和过程
--包声明
CREATE PACKAGE pkg AS
 PROCEDURE updatesals(name VARCHAR2(32),sal NUMBER);
 FUNCTION annual_income(name Varchar2(32)) RETURN NUMBER;
--包体定义
CREATE PACKAGE BODY pkg AS
PROCEDURE update_sals(name varchar2, sal number)
AS
BEGIN
  UPDATE emp SET sal = newsal
  WHERE  lower(ename) = lower(name);
END;
FUNCTION annual_income(name varchar2)
RETURN NUMBER AS
   annual_salary  NUMBER(7,2);
BEGIN
  SELECT sal*12 + nvl(comm,0) INTO annual_salary from emp
  WHERE lower(ename) = lower(name);
  RETURN annual_salary;
END;
END;
--包调用 要加上包名
SQL->call pkg.updatesals('fei',10000);
--创建触发器  通过某些特定条件隐含的执行存储过程
CREATE TRIGGER update_emp 
  AFTER UPDATE OF sal ON sal FOR EACH ROW 
BEGIN 
  UPDATE emp set sal =:new.sal--new 现在的值
  WHERE sal =:old.sal;--old 以前的值
END;
--简单类型
DECLARE 
  v_ename emp.ename%TYPE;--在不知道ename什么类型的状况下,可以匹配该类型
  v_sal   emp.sal%TYPE;
  v_sal_tax   Constant NUMBER(6,2):=1.5;--\ default expr 定义常量
  v_sal_af v_sal%TYPE;
  
BEGIN
  SELECT ename , sal INTO v_ename,v_sal
  FROM emp WHERE empno=&no;
  v_sal_af := v_sal * v_sal_tax;
  dbms_output.put_line('工资'||v_sal_af);
END;
--复合类型之记录  类似于结构体
DECLARE 
TYPE emp_record_type IS RECORD (
name emp.ename%TYPE,
salary emp.sal%TYPE,
title emp.job%TYPE);
emp_record emp_record_type;
BEGIN
 SELECT ename,sal,job INTO emp_record
 FROM emp Where empno='3';
 dbms_output.put_line('员工名'||emp_record.name);
 END;
 
 --复合类型之表 类似于数组,但下标没有上限和下限
 DECLARE 
 TYPE ename_table IS TABLE OF emp.ename%type
      INDEX BY BINARY_INTEGER;
      tabled ename_table ;
 BEGIN
  SELECT ename INTO tabled(-1) FROM emp
  WHERE empno = '2';
  dbms_output.put_line('雇员:'||tabled(-1));
END;
 
 
 --复合类型之嵌套表 下标不能为负,可以作为列属性
 
 CREATE OR REPLACE TYPE emp_type AS OBJECT(
 name VARCHAR2(10),salary NUMBER(6,2));
 
 CREATE OR REPLACE  TYPE emp_array IS  TABLE OF emp_type;
 
 CREATE TABLE unit(
 uno VARCHAR2(32),uname VARCHAR2(32),employee emp_array)
 NESTED TABLE employee STORE AS employee;--必须定义一个存储表
 
 --复合类型之VARRAY 它要限定元素个数
 
 CREATE TYPE art_type AS OBJECT(
 title VARCHAR2(30),publish DATE
 );
 CREATE TYPE art_array IS VARRAY(20) OF art_type;
 
 CREATE TABLE composition (
 id NUMBER(10),title VARCHAR2(32),art art_array
 );
 
持续更新中~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  
  
分享到:
评论

相关推荐

    Oracle高级开发课程之PL-SQL编程入门视频

    教程名称:Oracle高级开发课程之PL-SQL编程入门视频课程目录:【】PL_SQL编程课程_-lesson3【】PL_SQL编程课程_lesson5-2(完结)【】PL_SQL编程课程_最佳入门教程-intr1【】PL_SQL编程课程_最佳入门教程-lesson1【】...

    sql编程参考宝典电子书

    《SQL编程参考宝典电子书》是一本专为SQL学习者和开发者编写的全面指南,旨在帮助读者深入理解和掌握SQL语言的核心概念与实践技巧。在数据库管理领域,SQL(Structured Query Language)是不可或缺的语言,用于数据...

    SQL编程思想:基于5种主流数据库代码实现.docx

    SQL 是一种标准编程语言,用于管理关系型数据库系统,具有简洁明了的语法和强大的查询功能。 SQL 编程思想的核心要点在于结构化查询语言的设计和实现。结构化查询语言使得程序员可以以一种统一的方式对数据库进行...

    SQL编程词典,SQL帮助

    SQL编程词典,SQL帮助,程序员的好帮手

    Oracle SQL高级编程

    提供的【部分内容】部分并不是具体的Oracle SQL编程知识点,而是一个重复的网址:“Download at ***”。这可能是一个下载链接,但没有更多上下文信息,我们无法确定该链接所指向的具体内容。 需要注意的是,给出的...

    MySQL技术内幕 SQL编程及优化.pdf

    1.2 sq|编程 1.3数据类型 1.4查询处理 1.5子查询 1.6联接与集合操作 1.7聚合和旋转操作 2. SQL优化 2.1优化SQL的一般步骤 2.2 索引问题. 2.3两个常用的优化技巧 2.4常用SQL优化 2.5常用SQL技巧 3.优化...

    SQL Server2000设计与T-SQL编程

    《SQL Server 2000设计与T-SQL编程》这本书是针对数据库管理和开发人员的一份宝贵资源,尤其对于那些正在学习或已经使用Microsoft SQL Server 2000的读者来说,它提供了一套全面的知识体系。SQL Server作为一款强大...

    SQL编程

    SQL编程是数据库管理和数据分析的核心技能,它用于与关系型数据库进行交互,执行查询、更新、插入和删除数据等操作。SQL(Structured Query Language)是一种标准化的编程语言,被广泛应用于各种数据库系统,如MySQL...

    Oracle PL-SQL编程详解.pdf

    Oracle PL/SQL编程详解主要涵盖了数据库编程的关键方面,旨在帮助开发者深入理解如何利用PL/SQL进行高效、模块化的数据库应用开发。PL/SQL是Oracle数据库系统专用的一种过程化编程语言,它结合了SQL的查询能力并扩展...

    T-SQL编程基础_1

    ### T-SQL编程基础知识点详解 #### 一、T-SQL简介与基本概念 T-SQL(Transact-SQL)是Microsoft开发的一种SQL方言,主要用于SQL Server数据库管理系统中。它扩展了标准SQL的功能,提供了更丰富的编程能力,包括流程...

    T-SQL 编程基础

    T-SQL 编程基础

    PL-SQL编程 介绍

    PL/SQL编程对象包括存储过程、函数、包、触发器、类型等。这些对象可以直接在数据库中创建和调用,提高了代码复用性和数据库的集成能力。 通过以上知识点,我们可以看到PL/SQL作为一种强大的数据库编程语言,既具备...

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程

    Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g....

    T-SQL编程与应用

    【T-SQL编程与应用】是关于数据库编程的重要主题,主要涵盖了T-SQL语言的基础知识。T-SQL,全称Transact-SQL,是SQL Server所使用的扩展SQL语言,用于执行数据库查询、更新、事务处理等多种任务。 T-SQL语言的基础...

    Transact-SQL编程规范

    《Transact-SQL编程规范》概述了在使用T-SQL进行数据库编程时应当遵循的一系列准则,以提高代码的可读性、可维护性和性能。本文由郑佐编写,主要面向IT公司的设计开发人员,提供了关于T-SQL编程的基础原则和具体规范...

    全美经典-SQL编程习题与解答

    全美经典-SQL编程习题与解答全美经典-SQL编程习题与解答全美经典-SQL编程习题与解答全美经典-SQL编程习题与解答

    SQL_Server高级编程管理指南.rar

    综上所述,《SQL Server高级编程管理指南》涵盖了数据库设计、T-SQL编程、性能优化、安全管理和高可用性等多个方面,是一本全面的SQL Server学习资料。通过深入研读,读者可以全面提升在SQL Server环境中的编程和...

    SQL编程习题与解答.pdf

    SQL编程习题与解答 SQL编程相关的有趣问题,涉及数据库应用的许多方面,如财务、投资、旅游、销售、计算等,不一而足。针对每一个谜题,作者给出了基于SQL-99及更新标准的多种解决方案,展示了解题思路,对SQL程序员...

Global site tag (gtag.js) - Google Analytics