Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者。试验步骤如下:



1. DDL 和 DML


/**//*** DDL ***/
begin
EXECUTE IMMEDIATE 'drop table temp_1';
EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';
end;


/**//*** DML ***/
declare
v_1 varchar2(8);
v_2 varchar2(10);
str varchar2(50);
begin
v_1:='测试人员';
v_2:='北京';
str := 'INSERT INTO test (name ,address) VALUES (:1, :2)';
EXECUTE IMMEDIATE str USING v_1, v_2;
commit;
end;
2. 返回单条结果
declare
str varchar2(500);
c_1 varchar2(10);
r_1 test%rowtype;
begin
c_1:='测试人员';
str:='select * from test where name=:c WHERE ROWNUM=1';
execute immediate str into r_1 using c_1;
DBMS_OUTPUT.PUT_LINE(R_1.NAME||R_1.ADDRESS);
end ;
3. 返回结果集
CREATE OR REPLACE package pkg_test as

/**//* 定义ref cursor类型
不加return类型,为弱类型,允许动态sql查询,
否则为强类型,无法使用动态sql查询;
*/
type myrctype is ref cursor;

--函数申明
function get(intID number) return myrctype;
end pkg_test;
/

CREATE OR REPLACE package body pkg_test as
--函数体
function get(intID number) return myrctype is
rc myrctype; --定义ref cursor变量
sqlstr varchar2(500);
begin
if intID=0 then
--静态测试,直接用select语句直接返回结果
open rc for select id,name,sex,address,postcode,birthday from student;
else
--动态sql赋值,用:w_id来申明该变量从外部获得
sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
--动态测试,用sqlstr字符串返回结果,用using关键词传递参数
open rc for sqlstr using intid;
end if;

return rc;
end get;

end pkg_test;
/
分享到:
相关推荐
Oracle 动态SQL是数据库编程中的一个重要概念,它允许在运行时构建和执行SQL语句,从而提高了灵活性和适应性。动态SQL的使用通常在处理不确定的查询结构、执行基于条件的DML操作或者需要根据运行时信息生成SQL语句时...
根据给定文件的信息,以下是对“Oracle动态SQL4方法分析与应用.pdf”文档中所涉及知识点的详细说明: Oracle动态SQL技术: 动态SQL技术允许在程序执行时根据用户的输入构造SQL语句,它在编写程序时不需要确定具体的...
Oracle数据库作为当前企业级应用中广泛使用的数据库系统之一,其提供的动态SQL功能允许开发者在程序运行时构造和执行SQL语句,这种灵活性为程序开发提供了极大的便利。本文将探讨Oracle中的动态SQL实现机制,重点...
### Oracle动态SQL详解 #### 一、概述 Oracle动态SQL是一种强大的工具,允许开发者在运行时构建并执行SQL语句。这种灵活性对于处理未知或变化的数据结构尤其有用。本文将详细探讨Oracle动态SQL的多种使用方法,...
Oracle动态SQL是数据库编程中的一种技术,它允许在运行时构建和执行SQL语句,而不是在编译时确定。这在处理不确定的数据操作或者需要根据用户输入或程序逻辑动态生成SQL语句时非常有用。Oracle数据库提供了多种方式...
oracle动态sql例子,适用于存储过程中拼接sql
在Oracle数据库管理中,动态执行SQL语句是一种强大的功能,允许开发者在运行时构建和执行SQL语句,这对于处理不确定或变化的数据结构尤其有用。本文将深入探讨Oracle中动态执行SQL的四种主要方法,并通过具体示例...
Oracle数据库系统提供了对动态SQL的支持,这是一种在程序运行时构建和执行SQL语句的编程技术,对于实现数据库操作的灵活性具有重要作用。本文将探讨Oracle本地动态SQL的使用方法和技巧。 动态SQL的使用场景广泛,它...
### 基于Oracle高性能动态SQL程序开发 #### 一、引言 在现代数据库管理系统中,Oracle以其强大的功能和广泛的适用性而受到许多企业和开发者的青睐。在Oracle的编程环境中,动态SQL作为一种灵活的解决方案,能够...
动态 SQL 技术是一种高级的程序设计技术, 在程序开发 时,不知道要使用哪些字段或查询条件,而在程序执行时才能 构造出来。 遇到这种情况时使用动态 SQL 技术就能很好的满 足要求,这种技术具有很好的通用性,功能...
在Oracle数据库管理中,批量执行SQL脚本是常见的任务,特别是在数据处理、系统维护或自动化测试等场景。本文将深入探讨如何在Oracle环境中批量执行带有多个参数的多个SQL文件,以便进行高效的数据操作和测试。 首先...
oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...
"msmmPrj.rar_The Oracle_oracle dynamic sql"这个压缩包文件很可能包含了关于使用Oracle动态SQL的详细教程或项目代码,特别是通过SQLDA(SQL Descriptor Area)进行数据交互的方法。 SQLDA,全称为SQL描述符区域,...
### Oracle 动态 SQL 执行详解 在 Oracle 数据库中,动态 SQL 提供了一种灵活的方式来执行不预先定义好的 SQL 语句。这种方式允许开发者在运行时构建 SQL 语句并执行它们,这对于处理未知数据结构或需要动态生成...
Oracle的SQL监视工具SQLTracker是一款强大的性能分析工具,专为数据库管理员和开发人员设计,用于诊断和优化SQL查询性能。这款工具在Oracle数据库环境中扮演着重要角色,它可以帮助用户实时监控SQL语句的执行情况,...
Oracle和SqlServer语法区别 Oracle和SqlServer是两种流行的关系型数据库管理系统,它们之间存在着一些语法区别。了解这些区别对于开发者来说非常重要,因为它可以帮助他们更好地迁移到新的数据库管理系统。下面将...
Oracle数据库中的动态SQL应用方法是开发高效数据库查询程序的关键技术之一。动态SQL允许在程序运行时根据需要构建和执行SQL语句,增强了程序的灵活性和适应性,特别适合处理不确定或变化的数据操作需求。本文主要...
在Oracle数据库的开发中,动态SQL扮演着重要的角色,尤其在处理不确定的或复杂的查询需求时。动态SQL与静态SQL的主要区别在于,静态SQL在编译时即确定了SQL语句,而动态SQL则在运行时根据条件构建和执行。Oracle的PL...
### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...
Oracle与SQLServer的SQL语法差异,用简单易懂的语言和实例对Oracle和Sql Server语法之间的差异进行了对比分析,更加适用于入门的人