日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/9/30 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 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语句与日期变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。