http://tom7758.itpub.net/post/6024/49678
目前在ORACLE开发过程中,我所用到的动态SQL的一点心得。 我把它分为FORM级、TABLE级和pl/sql级。
1》FORM级 方法一:
FORMS_DDL:支持pl/sql和部分ddl 建表:Forms_DDL('create table temp(n NUMBER)'); 删表:Forms_DDL('drop table temp'); 删除记录:Forms_DDL('delete from temp'); 执行PL/SQL:Forms_ddl('begin '||过程名||'; End;');
**注意判断是否执行成功,通过FORM_SUCCESS or FORM_FAILURE来判断。
2》table级别 方法一:dbms_sql. 建表,删表,更新记录等操作,基本类似,我举一个建表的例子:
Declare
cursor_name integer;
ret INTEGER;
begin
cursor_name:=dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'create table test_2(name varchar2(8))', DBMS_SQL.native);
ret := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END; 查询数据:
Declare
cursor_name integer;
ret integer;
V_1 varchar2(10);
V_2 number;
begin
cursor_name:=dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'select ''test'' ,783426 from dual', DBMS_SQL.native);
DBMS_SQL.DEFINE_COLUMN(cursor_name, 1, V_1,10);
DBMS_SQL.DEFINE_COLUMN(cursor_name, 2, v_2);
ret := DBMS_SQL.EXECUTE(cursor_name);
IF DBMS_SQL.FETCH_ROWS(cursor_name)>0 THEN
DBMS_SQL.COLUMN_VALUE(cursor_name, 1, v_1);
DBMS_SQL.COLUMN_VALUE(cursor_name, 2, v_2);
dbms_output.put_line('第一个值:'||v_1);
dbms_output.put_line('第二个值:'||to_char(v_2));
end if;
Dbms_sql.close_cursor(cursor_name);
end ;
***最简单的判断执行是否成功,利用trap exception.
方法二:execute immediate
8版以上数据库,相当好用的一个东东,我常用。 建表,删表类似:
declare
begin
EXECUTE IMMEDIATE 'drop table temp_1';
EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';
end ; 增加数据
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;
查询数据:
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》pl/sql级别 我仅仅用于查询。 例:
DECLARE
TYPE mycursor IS REF CURSOR;
cursor_1 mycursor;
r_1 test%ROWTYPE;
str VARCHAR2(100);
BEGIN
str := 'select * from test';
OPEN cursor_1 FOR str;
LOOP
FETCH cursor_1 INTO r_1;
EXIT WHEN emp_cv%NOTFOUND;
dbms_output.put_line(r_1.name);
END LOOP;
CLOSE cursor_1;
END;
分享到:
相关推荐
在Oracle数据库的PL/SQL编程中,动态SQL是一种强大的技术,允许开发者在程序运行时根据条件构造和执行SQL语句。这种技术对于处理不确定的查询结构或者需要在运行时决定执行什么操作的情况非常有用。本篇文章主要介绍...
mybatis 框架中关于动态sql的内容讲解及笔记.txt
根据给定文件信息,以下是关于动态SQL语句编写的详细知识点: Mybatis的动态SQL技术是Mybatis框架中的一种强大特性,它允许用户在XML映射文件中编写灵活的SQL语句。动态SQL的实现方式多样,可以极大地简化复杂SQL...
本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...
标题中的“Kettle循环执行动态SQL”指的是使用Pentaho Data Integration(Kettle)工具来设计数据集成工作流,其中包含动态生成并执行SQL语句的步骤。在数据处理和ETL(Extract, Transform, Load)过程中,动态SQL是...
Gbase8s 动态 SQL 介绍 Gbase8s 动态 SQL 介绍 在 Gbase8s 中,动态 SQL 是一种特殊的 SQL 语句形式,它可以在执行时动态改变 SQL 语句的内容,不需要预先知道每个 SQL 语句的确切内容。与静态 SQL 不同,静态 SQL...
静态、动态SQL及各种游标 静态SQL和动态SQL是两种不同的SQL语句执行方式,分别应用于不同的场景中。静态SQL是指在PL/SQL中直接运行的SQL语句,没有什么特别之处。动态SQL则是指利用EXECUTE IMMEDIATE语句执行的SQL...
### 动态SQL 并且把返回的值赋给变量 在SQL Server中,动态SQL是一种强大而灵活的工具,允许开发人员根据运行时条件构建并执行SQL查询。本文将详细介绍如何利用`sp_executesql`来执行动态SQL,并重点讨论如何将执行...
SQL Server 动态 SQL 语句的用法 SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL ...
### 本地动态SQL的开发 #### 一、动态SQL的概念 动态SQL是在程序运行时构建并执行的SQL语句,其内容无法在编译时完全确定。与静态SQL(如常见的`UPDATE`语句)不同,动态SQL允许开发者在运行时根据实际情况构建...
iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...
以下是关于动态SQL的基本语法和应用的详细解释: 1. **普通SQL语句与EXEC的使用**: 当你需要在程序或存储过程中执行一个简单的SQL语句时,可以直接使用`EXEC`或`EXECUTE`关键字。例如,如果你有一个简单的查询,...
动态SQL与绑定变量是数据库编程中的重要概念,尤其在Oracle数据库中被广泛应用。动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. ...
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
动态 SQL 是 MyBatis 的一大特色,它允许我们在运行时根据条件构建 SQL 语句,极大地提高了代码的可维护性和灵活性。 动态 SQL 在 MyBatis 中主要通过 XML 映射文件或者注解来实现。在 XML 映射文件中,我们可以...
### 学习SQL应知道的动态SQL语句基本语法 #### 动态SQL语句概述 动态SQL是指在运行时动态构建的SQL语句。它通常用于需要根据不同的条件生成不同查询逻辑的情况,例如根据用户输入或特定业务逻辑来定制查询语句。...
在SQL世界中,动态SQL(Dynamic SQL)是一种强大的技术,特别是在复杂的数据库操作和程序设计中。在Microsoft SQL Server(MSSQL)环境下,掌握动态SQL的基本语法是提升SQL编程能力的关键。下面,我们将深入探讨动态...
mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。 mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,...
SQL(Structured Query Language)是用于管理和操作...综上所述,掌握SQL语句和动态SQL的基本语法对于任何IT从业者来说都至关重要,无论是数据库管理员还是开发者,都需要熟练运用这些技能来高效地操作和管理数据库。
本文将深入探讨如何在Kettle中实现动态SQL查询,这对于处理复杂的数据库操作和数据迁移至关重要。我们将讨论问号占位符和命名参数这两种方法,并分析它们的区别。 首先,让我们理解什么是动态SQL查询。在传统的SQL...