EXECUTE IMMEDIATE的简单使用

在今天的工作中需要在过程中执行动态的SQL语句,用到了EXECUTE IMMEDIATE。示例为Sp_Rcpms_EITest.Prc过程,整个脚本如下:
--Name: Sp_Rcpms_EITest
--举例说明EXECUTE IMMEDIATE的简单使用

[@more@]

------------------
CREATE OR REPLACE PROCEDURE Sp_Rcpms_EITest(
v_result OUT NUMBER)
AS
l_month VARCHAR2(7);
l_month1 VARCHAR2(6);
l_datetime VARCHAR2(19);
l_tablename VARCHAR2(30);
l_sql VARCHAR2(512);
l_result INTEGER;
BEGIN
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1),'YYYY-MM') mon INTO l_month FROM dual;
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1),'YYYYMM') mon INTO l_month1 FROM dual;
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') INTO l_datetime FROM dual;
l_datetime := l_datetime||' 00:00:00';

--动态变名
l_tablename := 'rcpms_cardinfo'||l_month1;

l_sql := 'INSERT INTO RCPMS_REPORTMONTHAREA(STATE,AREAID,MONEY,CARDCOUNT,TOTALMONEY,COUNTTIME,cardtype) '||
'SELECT ''0'',AREAID,MONEY,COUNT(*),SUM(RESIDUALMONEY),l_month,TYPE '||
'FROM '||l_tablename||
' WHERE fdatetime >= l_datetime AND state = ''2'' AND money <> residualmoney AND residualmoney <> 0 '||
'GROUP BY AREAID,MONEY,TYPE';

EXECUTE IMMEDIATE(l_sql);

v_result := 0;
COMMIT;

EXCEPTION
WHEN OTHERS THEN
v_result := 9;
ROLLBACK;

l_result := SQLCODE;
INSERT INTO TAB_MOVE_ERRLOG VALUES(TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS'), l_result);
COMMIT;
END Sp_Rcpms_EITest;
/
------------------

现把自己一些要点总结如下:
1. 据说使用EXECUTE IMMEDIATE能提高一些性能;
2. 如果需要在字符串中包含字符,用''来代表一个单引号;
3. EXECUTE IMMEDIATE中的EXECUTE不能简写为exec,测试环境为oracle 8i;
4. EXECUTE IMMEDIATE中执行DML语句不会自动提交,需要显示COMMIT;执行DDL语句提交所有之前改变的语句。
5. 使用绑定变量,如:
l_tablename := 'back_cardinfo_'||l_firstmon;
EXECUTE IMMEDIATE 'SELECT count(*) FROM '||l_tablename||' WHERE areaid = '||l_AreaID||' AND (state = '||l_state8||' or state = '||l_state9||') AND money = '||l_Money INTO l_count;

IF l_count > 0 THEN
l_hisyearcount := l_count;
ELSE
l_hisyearcount := 0;
END IF;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9896745/viewspace-988776/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9896745/viewspace-988776/

Python中的字典(Dictionary)学习 上一章节,我们学习了列表(List) 和 元组(tuple) 来表示有序集合。而我们在讲列表(list)的时候,我们用了列表(list) 来存储用户的姓名。那么如果我们为了方便联系这些童鞋,要把电话号码也添加进去,该怎么做呢?但是这样很不方便,我们把电话号码记录下来,就是为了有什么事能及时联系上这些童鞋。如果用列表来存储这些,列表越长,我们查找起来耗时就越长。 阅读详情

相关推荐

从工艺文件到寄生分析:手把手教你用华大九天RCExplorer做版图预检(附ITF文件解析)

本文详细介绍了华大九天RCExplorer工具在模拟IC和版图设计中的应用,从工艺文件解析到寄生参数提取的全流程。通过ITF文件的深度解析和实战案例,帮助工程师掌握金属层、介质层及通孔参数的关键影响,提升设计效率与准确性。文章还提供了与StarRC工作流集成的实用技巧,是国产EDA工具应用的权威指南。

weixin_42522552的博客 407

oracle EXECUTE IMMEDIATE动态执行sql及异常信息打印

oracle内置的EXECUTE IMMEDIATE可以用来解析并执行动态sql语句,动态拼写的sql中可以使用USING 参数1,参数2....来绑定变量。当拼写比较复杂的sql时,可能会出现一些脚本语法的错误,可以用oracle内置的SQLCODE、SQLERRM来打印相关的异常信息。 沿用上一篇oracle存储过程调用小技巧的测试表tt_est,新建一个存储过程p_tst。 CREATE

zz_cl的博客 9005

AI漫剧制作全流程零基础实操指南:从剧本到剪辑

AI漫剧是一种利用AI工具将剧本、分镜、出图、配音、剪辑整合为流水线的短视频内容形式。其技术原理基于文生图、图生图与文本转语音模型的组合,核心挑战在于角色一致性控制与分镜批量出图。这项技术大幅降低了视频制作门槛,使个人创作者无需演员和设备即可产出剧情向短内容,广泛应用于短视频平台的情景剧、玄幻、甜宠等题材。本文给出了一套零基础可照做的全流程实操方案,覆盖剧本提示词、分镜表、出图选型、配音合成与剪辑模板,帮助你快速跑通AI漫剧制作链路。

weixin_29048309的博客 527

Oracle中 execute immediate使用注意

execute immediate 中   1.拼接的动态sql  结尾不能有分号 2.拼接的sql中不能into 赋值,如果需要赋值,需要使用 execute immediate  v_sql into v_max_stat_time ; 3.拼接的sql中 注意空格。 4.变量部分需要替换上。 -- 细节动态语句里面不需要分号 -

liuxiangke0210的专栏 3214

48V电气架构全面科普和解析:下一代智能电动汽车核心驱动

随着电动汽车(EV)技术的不断发展,传统的12V电力系统已经逐渐无法满足日益增长的功率需求,尤其是在电动汽车中,48V电气系统的引入成为了一种理想的解决方案。在电动汽车中,48V系统与Zonal架构的结合,不仅有效提升了车辆电力系统的能效,还为未来的技术升级提供了灵活的设计基础。随着电动汽车(EV)技术的发展,车辆电气系统的工作电压逐步从传统的12V系统向更高的电压过渡。随着电动汽车技术的不断进步,传统的12V电气系统逐渐无法满足现代高性能电动汽车的需求,而48V电力系统的引入成为一种理想的解决方案。

weixin_43199439的博客 7811

【ESP32 S3 开发】基于I2S协议驱动INMP441数字麦克风 实现语音采集

注意INMP441的 L/R接地之后才稳定输出数据 否则一直都是0WAV格式说明这里主要是想说wav文件重要的就是生成一个wavhead来标识它是一个wave文件,wave文件的data chunk 中的data部分还是PCM编码格式的数据,直接从I2S读进去就可以,不需要压缩。wav文件的头一般由4个chunk组成。 以16bit深度为例,代码如下。其他深度可以根据注释自行计算。 I2S -> DAC i2s_read()函数,向flash中划分的一个buff当中读入byte数组。以16bit深度为例,一

m0_43395703的博客 1万+

Oracle 的execute immediate的用法

execute immediate的用法

qq_27524147的博客 6119

用Python的fengwo模块复刻通达信筹码峰(COST/WINNER),选股效率提升10倍

本文介绍了如何使用Python的fengwo模块高效复刻通达信的筹码峰(COST/WINNER)计算,显著提升选股效率。通过C++内核与多线程优化,fengwo模块将传统Python实现的数小时计算压缩至分钟级,解决了量化交易中的性能瓶颈问题。文章详细解析了筹码峰计算原理、fengwo模块的技术架构及实战应用,助力量化开发者构建高效选股系统。

weixin_29062823的博客 438

oracle execute immediate 单引号嵌套,Oracle EXECUTE IMMEDIATE语句里面的引号处理

例子中的语句使用动态SQL创建了一个存储过程将单引号 '改写为两个单引号 ''BEGINEXECUTE IMMEDIATE 'create or replace PROCEDURE SMDP_CLEAN_SUBSCRIPTIONS ASCURSOR subscriptions_curISSELECT * FROM SMDP_SUBSCRIPTIONS where N_STATUS = 5;TYPE...

weixin_35849182的博客 1693

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

2025年开源气象大模型的实现原理与实践指南

气象大模型在人工智能时代实现了革命性突破,通过深度学习技术以更低的计算成本达到甚至超越传统数值天气预报的精度。开源气象大模型的出现使得全球研究者和机构都能参与气象AI的创新。本文详细解析了开源气象大模型的实现原理,包括核心架构、数据准备、训练方法和实际预测流程,并提供了实践指南。核心架构主要采用Transformer、图神经网络和扩散模型,处理多模态数据融合和时空联合建模。数据体系构建涉及数据来源、预处理和增强策略。模型训练关键技术包括损失函数设计、分布式训练优化和训练过程监控。微调与领域适应策略包括迁移学

专注AI大模型,软件混淆,授权 1181

execute immediate

首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵逼的看着,一星差评!!! execute immediate 以下引用介绍比较好的例子说明 create or replace procedure proc_test( --参数区域 ) is --变...

weixin_30652879的博客 1478

ESP32-IDF开发之旅 基础篇⑨ ESP-IDF的FreeRTOS任务间通信和同步

本文介绍了FreeRTOS任务间通信中的队列机制,重点讲解了队列的创建、发送和接收数据的API使用方法。文章提供了详细的技术说明和示例代码,包括xQueueCreate、xQueueSend、xQueueReceive等核心函数的参数说明和返回值解释。通过一个2生产者+1消费者的实际案例,展示了如何在ESP-IDF环境下使用FreeRTOS队列实现任务间通信。示例中包含了数据发送失败处理和接收数据验证等实用技巧,为开发者提供了可参考的实现模式。

单片机菜鸟哥的博客 427

oracle execute immediate 游标,EXECUTE IMMEDIATE 常见使用方法

在ORACLE的PL/SQL里: EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMED...

weixin_31860973的博客 2486

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Oracle中EXECUTE IMMEDIATE的使用技巧

Oracle中EXECUTE IMMEDIATE的使用技巧

qq_43685474的博客 943

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mysql execute immediate_动态SQL之EXECUTE IMMEDIATE

1EXECUTE IMMEDIATEoracle中DBMS_SQL package包和EXECUTE IMMEDIATE都可以用来解析并执行动态SQL语句或非运行时创建的PL/SQL块,相比较而言,EXECUTE IMMEDIATE使用较简单,能够满足较常用的需要。1.1语法EXECUTE IMMEDIATE v_sql[BULK COLLECT INTO...

weixin_30273229的博客 4238

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

EXECUTE IMMEDIATE 用法

execute immediate执行动态语句。  eg:  create or replace procedure proc(  t_name in varchar2  )  IS  num_record NUMBER;  begin   execute immediate insert into || t_name || values (1,

shahaizimxm的专栏 1312

Execute immediate 语法

The EXECUTE IMMEDIATE statement prepares (parses) and immediately executes a dynamic SQL statement or an anonymous PL/SQL block. The syntax

frankeyf的专栏 1111

EXECUTE IMMEDIATE用法小结

1.常规用法 –立刻执行sql语句:将需要执行的sql存入字符串,然后执行 v_sql varchar2(1000); v_sql := ' UPDATE Person SET Name = 'wzc' WHERE id= 1 '; execute immediate v_sql; 2.立刻执行sql语句,并赋值给某个变量 v_sql := 'select ...

永不抹灭 3万+

动态SQL之EXECUTE IMMEDIATE

1         EXECUTE IMMEDIATE         oracle中DBMS_SQL package包和EXECUTE IMMEDIATE都可以用来解析并执行动态SQL语句或非运行时创建的PL/SQL块,相比较而言,EXECUTE IMMEDIATE使用较简单,能够满足较常用的需要。   1.1         语法              EXECUTE IM

细细的小破砖 2189

execute immediate 用法详解

最近在改写存储过程的时候,遇见了oracle中的 execute immediate ,对于这个没了解过,找了好多,也没有真正理解这个东西有什么作用,最后在网上看见一位高手的解释,通俗易懂。对execute immediate  的解释如下:简单来说 就是你一个存储过程当中 创建了一个表 table_a 然后要用insert into将其他的数据插入到这个table_a当中,但是因为你在创建过程的...

Tssit的个人博客 6万+

Oracle之execute immediate的用法

1. 在PL/SQL运行DDL语句 begin execute immediate 'set role all'; /*可以启用自己的所有角色,或者不启用自己的所有角色,只在当前的SESSION中有效 */ end; 2. 给动态语句传值(USING 子句) declare l_depnam varchar2(20) := 'testing...

容雅王子的博客 2229

Oracle EXECUTE IMMEDIATE

这段代码同样是执行了1000条insert语句,但是每一条语句都是不同的,因此ORACLE会把每条语句硬解析一次,其效率就比前面那段就低得多了。如果要提高效率,不妨使用绑定变量将循环中的语句改为       sqlstr:='insert into 测试表 (:i,:i+1,:i*1,:i*2,:i-1) ';       execute immediate sqlstr using i,i,

1111

EXECUTE IMMEDIATE的用法

<br />在ORACLE的PL/SQL里: EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。 -- 使用技巧 1. EXECUTE

JJ_LIJIN的专栏 746

Oracle中EXECUTE IMMEDIATE用法

一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。   在Oracle数据库开发PL/SQL块中我们使用的SQL分为:静态SQL语句和动态SQL语句。所谓静态SQL 指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。

EstherLty的博客 1万+

E​X​E​C​U​T​E​ ​I​M​M​E​D​I​A​T​E

EXECUTEIMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTEIMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTEIMMEDIATE,因为它获的收益在包之上。 使用技

suibi8811的专栏 969
上一篇: 程序实时监控
下一篇: 基本操作命令
cuiting6752
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值