zoukankan      html  css  js  c++  java
  • Oracle 动态SQL语句(3)之保存存储过程

       根据上两个关于动态SQL语句的改写,当调试运行没有问题后,可以把很多测试用的SQl语句或重复注释删除,但一定要把原始存储过程或函数保存。

    create or replace procedure sp_update_mnl00(i_id varchar2,i_realtime varchar2,i_min00 float, i_avg00 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-25 WY_laoK  2.修改动态SQL语句,主要包括变量的使用和WHERE语句的书写
    1.0.2    2012-9-25 WY_laoK  3.删除部分重复注释的语句、测试用SQL语句
    注释
    
    入参出参描述:
    i_id 测点编号
    i_realtime 更新时间
    i_min00 00-04分钟内最小值
    i_avg00 00-04分钟内平均值
    i_max00 00-04分钟内最大值
    
    ************************/
     v_recordnum NUMBER:=0;--标识是否存在记录
     v_tablename varchar2(30);--表名
     v_sql_statement varchar2(200);--执行的SQL语句
     --v_time varchar2(30);--时间
     --v_datetime date;
    begin
      v_tablename:=  fun_create_mnl(i_id);--获取表名,如果有直接获取,没有则创建表
      --判断是否含有此时间下的列
     v_sql_statement:='select count(DATETIME) from '||v_tablename||
     ' Where DATETIME=to_date('''||i_realtime||''',''yyyy-mm-dd hh24-mi-ss'')';--WHERE语句三个引号***
     --Dbms_output.put_line(v_sql_statement); --输出SQL语句
      execute immediate v_sql_statement into v_recordnum ;
     IF v_recordnum=0 THEN
     --没有则插入
      execute immediate 'INSERT INTO '||v_tablename||'(DATETIME,MIN00,AVG00,MAX00)
      VALUES (to_date('''||i_realtime||''',''yyyy-mm-dd hh24-mi-ss''),'||i_min00||','||i_avg00||','||i_max00||')';
      -- v_sql_statement:= 'INSERT INTO '||v_tablename||'(DATETIME,MIN00,AGV00,MAX00)
     -- VALUES (to_date('''||i_realtime||''',''yyyy-mm-dd hh24-mi-ss''),'||i_min00||','||i_agv00||','||i_max00||')';
     -- execute immediate v_sql_statement;
      ElSE
      --有则更新
       execute immediate 'UPDATE '||v_tablename||' 
        SET MIN00='||i_min00||',AVG00='||i_avg00||',MAX00='||i_max00||'
        WHERE DATETIME=to_date('''||i_realtime||''',''yyyy-mm-dd hh24-mi-ss'')';
      end if;
      commit;--数据更新
    end ;
    
  • 相关阅读:
    [BTS] BizTalk WCF-SQL Adapter 高级应用
    [BTS] BizTalk EDI character set and separator settings
    [ThingWorx] Install Guideline
    [ThingWorx] Install PostgreSQL Issue
    [BTS] BizTalk EDI AS2 Error 1
    [BTS] BizTalk With EF
    [BTS] Exception occurred when persisting state to the database
    [BTS] MSDTC
    [BTS] The value "" for the property InboundId is invalid
    [Android] Android Sutdio on Surface Pro 3
  • 原文地址:https://www.cnblogs.com/wylaok/p/2703374.html
Copyright © 2011-2022 走看看