在 Oracle 动态SQL语句(1)中提到基本动态SQL语句书写,但在写动态SQL语句时特别要注意日期型变量和WHERE语句的编写。

如下代码:

1、注意在执行动态SQL语句时,execute immediate ***关键语句,在调试过程中,最好把动态SQL语句即一个字符串赋值给一个字符变量,

并用Dbms_output.put_line(SQL语句字符串)把SQL语句输出,方便查看SQL语句是否有误;

2、因动态SQL语句相对静态SQL语句的执行效率低,建议用静态SQL语句。如果一定要用,一定要注意变量的使用!!!

create or replace procedure sp_update_mnl00(i_id varchar,i_realtime DATE,i_min00 float, i_agv00 float,i_max00 float )

authid current_user as

/***********************

名称:sp_update_mnl00

功能描述:更新模拟量历史数据表中含00的列表项

修订记录:

版本号 编辑时间 编辑人 修改描述

1.0.0 2012-9-22 wy_laok 1.创建此存储过程

1.0.1 2012-9-21 wy_laok 2.修改表名称及变量名称,增加必要注释

入参出参描述:

i_id 测点编号

i_realtime 更新时间

i_min00 最小值

i_agv00 平均值

i_max00 最大值

************************/

v_recordnum NUMBER:=0;--标识是否存在记录

v_tablename varchar2(30);--表名

v_sql_statement varchar2(200);--执行的SQL语句

v_time varchar2(30);--时间

--v_datetime date;

begin

insert into mnl(datetime) values (i_realtime) ;

v_tablename:= fun_create_mnl(i_id);--获取表名,如果有直接获取,没有则创建表

v_time:=to_char(i_realtime,'yyyy-mm-dd hh24:mi:ss');

-- v_datetime:=to_date(v_time,'yyyy-mm-dd hh24-mi-ss');

--i_realtime:=to_date(to_char(i_realtime,'yyyy-mm-dd hh24-mi-ss'),'yyyy-mm-dd hh24-mi-ss');

--判断是否含有此时间下的列

v_sql_statement:='select count(DATETIME) from '||v_tablename||

' Where DATETIME=to_date('''||v_time||''',''yyyy-mm-dd hh24-mi-ss'')';--WHERE语句三个引号***

Dbms_output.put_line(v_sql_statement);

execute immediate v_sql_statement into v_recordnum ;

--Dbms_output.put_line(v_sql_statement);

IF v_recordnum=0 THEN

--没有则插入

--execute immediate

v_sql_statement:= 'INSERT INTO '||v_tablename||'(DATETIME,MIN00,AGV00,MAX00)

VALUES (to_date('''||v_time||''',''yyyy-mm-dd hh24-mi-ss''),'||i_min00||','||i_agv00||','||i_max00||')';

execute immediate v_sql_statement;

Dbms_output.put_line(v_sql_statement);

ElSE

--有则更新

--execute immediate

v_sql_statement:= 'UPDATE '||v_tablename||'

SET MIN00='||i_min00||',AGV00='||i_agv00||',MAX00='||i_max00||'

WHERE DATETIME=to_date('''||v_time||''',''yyyy-mm-dd hh24-mi-ss'')';

execute immediate v_sql_statement;--执行SQL语句

Dbms_output.put_line(v_sql_statement);--输出SQL语句

end if;

commit;--数据更新

end ;

oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量相关推荐

  1. oracle 执行带参数的sql语句_Oracle动态SQL语句的简单执行

    在使用ODP.NET进行Oracle编程时,有时候SQL语句非常复杂,需要采用动态构造查询语句的情况,有两种方法可以构造动态的SQL语句,并执行返回结果集. 1.在数据访问层构造SQL语句 例如下面的 ...

  2. Mybatis中XML的文件SQL语句与动态sql标签(trim|where|set|foreach|if|choose|when|otherwise|bind)

    在xml中写sql语句有很多的规范.标准,有时候想要找对应的例子还得翻一翻以前的代码,这里干脆对遇到的情况做个记录. 一,新建XML文件 <?xml version="1.0" ...

  3. sql语句和动态sql语句

    mybatis常用静态sql和动态sql 文章目录 mybatis常用静态sql和动态sql 静态sql 1.select 标签 2.insert, update 和 delete 3.sql标签 动 ...

  4. java oracle分页查询语句_ORACLE分页SQL语句

    一个非常好的ORACLE的分页SQL语句 select * from (select my_table.*, rownum as my_rownum from ( select yhbh, yhmc ...

  5. 动态sql防止报错的写法 当判断语句都是null时候会报错 需要手动添加一个判断语句 一般id都会存在...

    转载于:https://www.cnblogs.com/classmethond/p/10464425.html

  6. Oracle 动态SQL语句

    Oracle 动态SQL语句     EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包.  它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 ...

  7. Oracle PL/SQL进阶编程(第十五弹:动态SQL语句)

    理解动态SQL语句 动态SQL语句基础 动态SQL语句不仅是指SQL语句是动态拼接而成的,更主要的是SQL语句所使用的对象也是运行时期才创建的.出现这种功能跟PL/SQL本身的早起绑定特性有关,早PL ...

  8. 使用Oracle的DBMS_SQL包执行动态SQL语句

    引用自:http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx 在某些场合下,存储过程或触发器里的SQL语句需要动态生成.Oracle ...

  9. Oracle入门(十四.18)之使用动态SQL

    一.SQL的执行流程 数据库中的所有SQL语句都经历了不同的阶段: •解析:预执行"这可能吗?"检查包括语法,对象存在,权限等 •绑定:获取语句中引用的任何变量的实际值 •执行:语 ...

最新文章

  1. 滚动屏幕显示隐藏div_HTML结构-常用标签:a·img·table·form·input·iframe·div
  2. Spring3 表达式语言(SpEL)介绍
  3. windows API(一)
  4. linux c之加入了加入原文件 math.h调用abs()函数出现implicit declaration of function错误
  5. 程序员和注册会计师的地位_“注册会计师和律师哪个地位高?”这3张图给出了答案!...
  6. mysql数据库什么情况下会锁表_mysql数据库锁的产生原因及解决办法
  7. python基本数据类型——整型,浮点型,复数,字符串
  8. 7个顶级静态代码分析工具
  9. html绑定drag事件,HTML-Drag事件(拖拽)
  10. c# chart 各个属性_C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
  11. LeetCode 714. 买卖股票的最佳时机含手续费--动态规划
  12. Q4财报再次显示,百度在2B市场的竞争中已占据领先地位
  13. anchor译中文_anchor是什么意思中文翻译
  14. 收发一体超声波测距离传感器模块_咸阳KUS3000 超声波额液位物位计
  15. 线性回归;欠拟合和过拟合
  16. html5拖放详解,HTML5拖拽/拖放(drag drop)详解
  17. plc服务器作用,工业控制系统以及PLC的简单介绍
  18. 澳大利亚种植最辣辣椒 制作辣酱需穿防护服
  19. AV/EDR 免杀逃避技术汇总
  20. 物联网设备数据流转之前后端数据交互与展示:Layout, Cascader, Card, Dialog, Table, Pagination

热门文章

  1. RecSys 2019最佳论文:基于深度学习的推荐系统是否真的优于传统经典方法?
  2. 「推荐系统」领域近期有哪些值得读的论文?| 每周论文清单
  3. web公选课第三节2020.5.18
  4. poi向word插入图片_如何使用word裁剪图片图形?如何使用word修整图片?
  5. MybatisPlus操作模板
  6. 记录一些使用git过程中的bug
  7. 文件IO-Properties
  8. Windows——FTP命令匿名登录解决方案
  9. PHP——获取当前日期时间错误解决方案(PHP当前时区设置)
  10. Extended Twin Composite Number