PLSQL_动态语句的解析(概念)

2014-06-02
BaoXinjian

1. 最简单例子

(1).SQL


 1 DECLARE
2
3 l_sql_text VARCHAR (1000);
4
5 TYPE c_type_wip_entity IS REF CURSOR;
6
7 c_wip_entity c_type_wip_entity;
8
9 r_wip_entity wip_entities%ROWTYPE;
10
11 BEGIN
12
13 l_sql_text :=‘select * from wip_entities‘
14
15 || ‘ where wip_entity_id in (‘|| ‘‘‘‘|| ‘2363‘ || ‘‘‘,‘‘ ‘|| ‘2462‘|| ‘‘‘)‘;
16
17 DBMS_OUTPUT.put_line (l_sql_text);
18
19 OPEN c_wip_entity FOR l_sql_text;
20
21 LOOP
22
23 FETCH c_wip_entity INTO r_wip_entity;
24
25 EXIT WHEN c_wip_entity%NOTFOUND;
26
27 DBMS_OUTPUT.put_line (‘Job Name-->‘ || r_wip_entity.wip_entity_name);
28
29 END LOOP;
30
31 END;

(2).DBMS Output

2. 动态语句结合批处理

(1).SQL


 1 DECLARE
2
3 i NUMBER;
4
5 l_sql_text VARCHAR (1000);
6
7 TYPE c_type_wip_entity IS TABLE OF wip_entities%ROWTYPE;
8
9 c_wip_entity c_type_wip_entity;
10
11 p_wip_entity_id NUMBER := 2363;
12
13 BEGIN
14
15 l_sql_text := ‘select * from wip_entities where wip_entity_id = :wip_entity_id‘;
16
17 EXECUTE IMMEDIATE l_sql_text
18
19 BULK COLLECT INTO c_wip_entity
20
21 USING p_wip_entity_id;
22
23 FOR i IN 1 .. c_wip_entity.COUNT
24
25 LOOP
26
27 DBMS_OUTPUT.put_line (c_wip_entity (i).wip_entity_name);
28
29 END LOOP;
30
31 END;

(2).DBMS Output

3. 动态更新语句

(1).SQL


 1 DECLARE
2
3 l_sql_text VARCHAR (1000);
4
5 BEGIN
6
7 l_sql_text := ‘update cux_wf_demo_documents set note= ‘ || ‘‘‘Test‘‘‘ || ‘ where document_id= :document_id‘;
8
9 EXECUTE IMMEDIATE l_sql_text
10
11 USING 1;
12
13 DBMS_OUTPUT.put_line (l_sql_text);
14
15 END;

(2).DBMS Output

Thanks and Regarads

PLSQL_动态语句的解析(概念),布布扣,bubuko.com

时间: 2024-10-14 23:48:51

PLSQL_动态语句的解析(概念)的相关文章

PLSQL_数据结构类型的解析(概念)

2014-06-02 BaoXinjian 一.总论 1. 字段 2. 记录 3. 集合 4. 游标 5. 其他 二.具体分析 1. 字段 (1). 标准字段 l_wip_entity_id NUMBER; (2). 基于表字段 l_wip_entity_id wip_entities.wip_entity_id%TYPE; 2. 记录 (1). 标准记录 TYPE r_type_wip_entity ISRECORD( wip_entity_id wip_entities.wip_entity

【转】Oracle 执行动态语句

1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理.通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式.

ABP中动态WebAPI原理解析

ABP中动态WebAPI原理解析 动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能,这应该算是对DRY的最佳诠释了. 如下图所示,一行代码就为所有实现了IApplicationService的类型,自动创建对应的动态WebAPI. 这么Magic的功能是如何实现的呢? 本文为你揭开其Magic的外表.你会发现,实现如此Magic的功能,最关键的代码

动态语句SQL语句写法

/****************************************************************************************************************************************************** 动态语句语法:exec/sp_executesql语法 整理人:中国风(Roy) 日期:2008.06.06 *******************************************

ORACLE之SQL语句内部解析过程【weber出品】

一.客户端通过监听连接到数据库,数据库开启一个server process进程来接收客户端传过来的sql. 1.这条sql语句从来都没有被执行过.(硬解析) 2.这条sql语句被执行过.(软解析) 二.我们来看一条SQL语句内部解析到底经历了什么? sql硬解析解析的步骤 1.语法检测:检测sql语句有没有语法错误,是否符合sql规范 2.语义检测:检测sql语句涉及的对象是否存在. 3.检查共享池中是否存在相同的已经执行过的sql语句. 4.通过数据字典的统计信息,来计算最优执行计划. sql

ibatis动态语句加and 和不加and

<select id="queryGoodsGroupCodeName" parameterClass="String" resultClass="codeTextBean"> SELECT L4_GDS_GROUP_CD CODE,L4_GDS_GROUP_DESC NAME FROM DM_GDS_GROUP_INF_TD <dynamic prepend="WHERE"> <isNotEmp

sql查询语句如何解析成分页查询?

我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能,很多人在处理“总统计”是这样:“select count(*) from (<sql原查询语句>) ”,而不是把原sql查询语句中columns替换成“count(*)”:相比前者统计查询效率高不高,大家心知肚明.“分页查询”很简单,对于mysql语句就是在原sql查询语句后面加上“limit 数

sql 动态语句

如果动态语句有表变量 例子如下: declare @mS varchar(10) declare @mE varchar(10) declare @mSQL nvarchar(500) --SQL语句 set @mSQL=N' declare @mTable table(fcode varchar(10), fno varchar(10), fspec varchar(50)) insert into @mTable select top 100 code,no,spec from t300km

使用C语言为python编写动态模块(2)--解析python中的对象如何在C语言中传递并返回

楔子 编写扩展模块,需要有python源码层面的知识,我们之前介绍了python中的对象.但是对于编写扩展模块来讲还远远不够,因为里面还需要有python中模块的知识,比如:如何创建一个模块.如何初始化python环境等等.因此我们还需要了解一些前奏的知识,如果你的python基础比较好的话,那么我相信你一定能看懂,当然我们一开始只是介绍一个大概,至于细节方面我们会在真正编写扩展模块的时候会说. 关于使用C为python编写扩展模块,我前面还有一篇博客,强烈建议先去看那篇博客,对你了解Pytho