今天是: | 首页 | 营销咨讯 | 推销技巧 | 网络营销 | 论文大全 | 外贸知识 | 市场信息 | 留言咨询 | 论坛 |
最 新 文 章
普通文章解读二八理论和长尾理论在…
普通文章雅虎倒向谷歌被反垄断部门…
普通文章网络视频营销漫路求索
普通文章涂料是否适合网络营销
普通文章IMPACT揭秘网络营销秘诀
普通文章广告也要得民心,令人生厌…
普通文章谷歌在华战略转向中小企业
普通文章博客营销文章写作技巧
普通文章网盛1800万收购中华纺织网
普通文章互联网进入营销阶段
最 新 热 门
普通文章解读二八理论和长尾理论在…
普通文章雅虎倒向谷歌被反垄断部门…
普通文章网络视频营销漫路求索
普通文章涂料是否适合网络营销
普通文章IMPACT揭秘网络营销秘诀
普通文章广告也要得民心,令人生厌…
普通文章谷歌在华战略转向中小企业
普通文章博客营销文章写作技巧
普通文章网盛1800万收购中华纺织网
普通文章互联网进入营销阶段
最 新 推 荐
推荐文章网站策划之栏目策划
推荐文章网络营销--创意致胜 充满“…
推荐文章Web2.0创业者面临艰难选择…
相 关 文 章
  • JSP连接SQL Server 2000系统…

  • Tomcat5+Mssql server 2000数…

  • Eclipse 3.0 上配置JSP开发环…

  • Jsp&Servelet 学习笔记(1)

  • Jsp&Servelet 学习笔记(2)

  • Jsp&Servelet 学习笔记(3)

  • Jsp&Servelet 学习笔记(4)

  • Jsp&Servelet 学习笔记(5)

  • jsp+tomcat+mysql+sevlet+ja…

  • SQL Server 2000的安全配置

  • Q
    您现在的位置: 推销员 >> 网络营销 >> 网站建设 >> 数据库 >> 文章正文
    PL/SQL开发中动态SQL的使用方法
    PL/SQL开发中动态SQL的使用方法
    作者:佚名 文章来源:www.top-sales.com.cn 点击数: 更新时间:2007-3-22     
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:

      内容摘要:在PL/SQL开发过程中,使用SQL,PL/SQL可以实现大部份的需求,但是在某些特殊的情况下,在PL/SQL中使用标准的SQL语句或DML语句不能实现自己的需求,比如需要动态建表或某个不确定的操作需要动态执行。这就需要使用动态SQL来实现。本文通过几个实例来详细的讲解动态SQL的使用。  

      本文适宜读者范围:Oracle初级,中级

      系统环境:

       OS:windows 2000 Professional (英文版)

       Oracle:8.1.7.1.0

      正文:

      一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。

      首先我们应该了解什么是动态SQL,在Oracle数据库开发PL/SQL块中我们使用的SQL分为:静态SQL语句和动态SQL语句。所谓静态SQL指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。编译程序对动态语句部分不进行处理,只是在程序运行时动态地创建语句、对语句进行语法分析并执行该语句。

      Oracle中动态SQL可以通过本地动态SQL来执行,也可以通过DBMS_SQL包来执行。下面就这两种情况分别进行说明:

      一、本地动态SQL

      本地动态SQL是使用EXECUTE IMMEDIATE语句来实现的。

      1、本地动态SQL执行DDL语句:

      需求:根据用户输入的表名及字段名等参数动态建表。

    create or replace procedure proc_test
    (
        table_name in varchar2,     --表名
        field1 in varchar2,          --字段名
        datatype1 in varchar2,      --字段类型
        field2 in varchar2,          --字段名
        datatype2 in varchar2        --字段类型
    ) as
        str_sql varchar2(500);
    begin
        str_sql:=’create table ’table_name’(’field1’ ’datatype1’,’field2’ ’datatype2’)’;
        execute immediate str_sql;   --动态执行DDL语句
        exception
            when others then
                null;
    end ;

      以上是编译通过的存储过程代码。下面执行存储过程动态建表。

      SQL> execute proc_test(’dinya_test’,’id’,’number(8) not null’,’name’,’varchar2(100)’);

    PL/SQL procedure successfully completed

    SQL> desc dinya_test;
    Name Type          Nullable Default Comments
    ---- ------------- -------- ------- --------
    ID   NUMBER(8)

    NAME VARCHAR2(100) Y

    SQL>

       到这里,就实现了我们的需求,使用本地动态SQL根据用户输入的表名及字段名、字段类型等参数来实现动态执行DDL语句。

       2、本地动态SQL执行DML语句。

      需求:将用户输入的值插入到上例中建好的dinya_test表中。

    create or replace procedure proc_insert
    (
        id in number,                                 --输入序号

    文章录入:admin    责任编辑:admin 
  • 上一个文章:

  • 下一个文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |