`
clz2008wan
  • 浏览: 7705 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PL SQL中动态sql的执行

阅读更多
oracle中execute immediate的使用(select/insert/update/delete) execute immediate的语法如下:

execute immediate 'sql';
execute immediate 'sql_select' into var_1, var_2;
execute immediate 'sql' using [in|out|in out] bind_var_1, [in|out|in out] bind_var_2;
execute immediate 'sql_select' into var_1, var_2 using [in|out|in out] bind_var_1, [in|out|in out] bind_var_2;
execute immediate 'sql' returning into var_1;
execute immediate 'sql' bulk collect into indexed_var;


用法实例:
Declare
        v_table varchar2(20);
        v_sql Varchar2(100);
        Begin
             v_table:='hqf.testtable';
             v_sql:='select * from '||v_table;
             dbms_output.put_line(v_table);
             dbms_output.put_line(v_sql);
           Execute Immediate v_sql;
        End;


Declare
       v_sid Integer:=20020101;
       v_sql Varchar2(100);
       v_result Varchar2(50);
Begin
     --v_sid:=12;
     v_sql:='Select loc into v_result from scott.dept d where d.deptno=:1 ';

     dbms_output.put_line(v_sql);
     --dbms_output.put_line(v_result);
     Execute Immediate v_sql
     Using 10 ;
     Commit;

End;

--动态命令的实用参考一( select ..into)
--Execute immediate 命令在使用into关键字时与静态的plsql块中
--into关键字使用方法上的区别。

declare
v_result varchar2(20);
begin
execute immediate 'select dname from scott.dept d where d.deptno=:1' Into v_result   --:1这是一个绑定变量
Using 70;
commit;
dbms_output.put_line('结果为:'||v_result);
end;
--绑定变量,通俗的讲就是一个占位的参数,而后用using中的常量或着变量去找它的相应

Declare
v_result Varchar2(20);
Begin
     Select dname Into v_result From scott.dept d Where d.deptno=10;
     dbms_output.put_line(v_result);
End;

declare
v_result varchar2(20);
begin
execute immediate 'select dname from scott.dept d where d.deptno=:1' Into v_result
Using 70;
commit;
dbms_output.put_line('结果为:'||v_result);
end;


--动态命令的实用参考一( insert ..into)
--
Begin
     Execute Immediate 'insert into scott.dept values (:1,:2,:3) '
     Using 70,'IT','Beijing';
     Commit;
End;


declare
   l_depnam varchar2(20) := 'testing';
   l_loc     varchar2(10) := 'Dubai';
   begin
   execute immediate 'insert into scott.dept values   (:1, :2, :3)'
     using 60, l_depnam, l_loc;
   commit;
end;


---尽享动态执行sql的execute immediate的命令使用的魅力。
--对比静态的测试,和动态测试。
Declare
v_result Varchar2(20);
Begin
v_result:=mypackage.myfun1(10);
dbms_output.put_line(v_result);
mypackage.mypro1(20020101,v_result);
dbms_output.put_line(v_result);

End;
--Select * From student s Where s.student_id=20020101;
---Select * From testtable Where recordnumber=10;


Declare
v_result Varchar2(20);
Begin
     --动态执行函数
     Execute Immediate 'begin :1:=mypackage.myfun1(:2); end;'
     Using Out v_result,In 10;
     Commit;
     dbms_output.put_line(v_result);

     --动态执行存储过程
     Execute Immediate 'begin mypro1(:1,:2); end;'
     Using In 20020101,Out v_result;
     Commit;
     dbms_output.put_line(v_result);
End;


--动态执行update语句实例:
create or replace function f_testweekday
return integer
is
    v_sql          varchar(2000);
    i_sendcount    integer;
begin
--_' || f_getweekday() || '
    v_sql := 'update t_push_smstemp_inform set sendcount=sendcount+1 returning sendcount into :1';

    execute immediate v_sql using out i_sendcount;

    return 0;
exception
    when others then
    rollback;
    return 0;
end f_testweekday;
分享到:
评论

相关推荐

    pl/sql最新中文手册

    3. **异常处理**:在PL/SQL中,异常处理是通过EXCEPTION关键字实现的,用于捕获并处理运行时错误。手册会详细解释如何定义和使用预定义及自定义异常。 4. **数据库操作**:PL/SQL与Oracle数据库紧密集成,可以执行...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

     除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    在实际工作中,这样的工具通常会提供友好的图形用户界面(GUI),方便用户编写和执行PL/SQL代码,同时可能还包含调试、代码提示、自动完成、数据库对象浏览器等功能,极大地提升了数据库管理员和开发人员的工作效率...

    64位PL*SQL Developer

    一旦客户端安装完成,就可以通过PL/SQL Developer创建连接,管理数据库对象,执行SQL语句,调试PL/SQL代码,以及进行其他数据库相关的开发工作。 在【压缩包子文件的文件名称列表】中提到的"PLSQL Developer 12...

    pl sql批量执行多个sql文件和存储过程

    PDC文件是用来定义执行顺序的文本文件,通过它可以在PL/SQL Developer中指定要执行的一系列命令。 #### 三、编写PDC文件 打开`batch.pdc`文件,在其中编写以下内容: ```sql conn user_name1/password@database1;...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...

    pl sql 官方英文文档

    手册会描述这些面向对象特性如何在PL/SQL中实现,并提供示例代码帮助理解。 最后,Oracle PL/SQL Language Reference 11g Release 2 (11.2)还会提供关于PL/SQL与其他技术的集成信息,比如与Oracle SQL Developer的...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

    本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。通过学习本书,读者不仅可以掌握Oracle常用工具Oracle Universal Installer、Net Comfiguration Assistant、SQL Developer、SQL*Plus的作用及使用方法,...

    PL/SQL中文包

    PL/SQL是Oracle数据库系统中的一个编程语言,用于在数据库中执行复杂的业务逻辑和数据处理。这个"PL/SQL中文包"显然是为了帮助中国用户更好地理解和使用PL/SQL而设计的,它可能包含了中文版的文档、教程、错误消息...

    Oracle PL SQL程序设计 上 第五版(代码示例)

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

    oracle10g_pl/sql

    - **游标变量**:用于存储游标状态,可以在PL/SQL中传递和操作。 - **包**:将相关的过程、函数和变量打包在一起,便于管理和重用。 6. **PL/SQL性能优化** - **绑定变量**:减少解析次数,提高执行效率。 - **...

    PL/SQL经典介绍

    第一章 PL-SQL一览 第二章 PL-SQL基础 第三章 PL-SQL数据类型 第四章 PL-SQL的控制结构 第五章 PL-SQL集合与记录(1) 第六章 PL-SQL集合与记录(2) ...第十二章 本地动态SQL 第十三章 PL-SQL应用程序性能调优

    PL SQL Developer 7.1.4 汉化包

    在Oracle数据库管理中,PL/SQL是一种过程式语言,常用于构建复杂的数据库应用。7.1.4版本是该软件的一个特定迭代,可能包含了一些新功能、性能优化或bug修复。 汉化包是指将原版软件的英文界面翻译成中文,以便于...

    PL/SQL中文帮助手册

    在PL/SQL中,主要包含以下核心概念: 1. **块结构**:PL/SQL程序的基本单元是块,包括声明部分、执行部分和异常处理部分。声明部分用于定义变量和常量,执行部分包含语句和控制结构,异常处理部分处理程序运行时...

    SQL与PL SQL讲座

    - 动态SQL:PL/SQL允许动态构建SQL语句,根据程序运行时的条件执行不同的查询。 - 触发器:PL/SQL可以创建触发器,当满足特定数据库事件(如INSERT、UPDATE或DELETE)时自动执行。 - 存储过程和函数:PL/SQL定义...

    pl/sql developer11.0

    标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们将深入探讨PL/SQL Developer的功能、特性以及它在Oracle数据库开发中的作用。 PL/SQL(Procedural Language/Structured Query ...

    Oralce数据库SQL和pl_sql实例教程

    本教程主要围绕Oracle数据库中的SQL和PL/SQL进行实例教学。 在SQL部分,我们首先了解到SQL的主要特点和分类。SQL语言能在Oracle数据库中执行多种任务,如创建、查询、更新和删除数据。其特点是书写简洁,易读性强,...

    pl/sql developer 中文指南

    PL/SQL Developer的调试器是其一大亮点,它支持设置断点、单步执行、查看变量值、调用堆栈等调试功能,帮助开发者追踪和定位程序中的错误。 5. **数据查看与操作** 工具内置了数据浏览和操作功能,可以直接在结果...

    基本SQL语句及PL/SQL语句

    3. **存储过程和函数**:PL/SQL支持创建可重复使用的存储过程和函数,这些在数据库中执行的代码可以接受参数,返回结果。 4. **游标**:允许逐行处理查询结果,常用于动态处理数据。 5. **包(PACKAGE)**:将相关...

Global site tag (gtag.js) - Google Analytics