當前位置:首頁 » 服務存儲 » 存儲過程生成時間戳
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲過程生成時間戳

發布時間: 2022-09-23 21:48:14

⑴ ORACLE資料庫. PL/sql的時間戳

時間戳,就把它理解為一個時間點,就是當一件事發生時,給它一個時間標記,記錄此時的時間。
這句話意思就是,對變數v_timestamp賦初值為當前系統時間sysdate時間戳。

⑵ db2 存儲過程 異常處理

存儲過程異常的處理:
DECLARE handler-type HANDLER FOR condition handler-action

異常處理器類型(handler-type)有以下幾種:
CONTINUE 在處理器操作完成之後,會繼續執行產生這個異常語句之後的下一條語句。
EXIT 在處理器操作完成之後,存儲過程會終止,並將控制返回給調用者。
UNDO 在處理器操作執行之前,DB2會回滾存儲過程中執行的SQL操作。在處理器操作完成之後,存儲過程會終止,並將控制返回給調用者。
異常處理器可以處理基於特定SQLSTATE值的定製異常,或者處理預定義異常的類。預定義的3種異常如下所示:
NOT FOUND 標識導致SQLCODE值為+100或者SQLSATE值為02000的異常。這個異常通常在SELECT沒有返回行的時候出現。
SQLEXCEPTIOIN 標識導致SQLCODE值為負的異常。
SQLWARNING 標識導致警告異常或者導致+100以外的SQLCODE正值的異常。
如果產生了NOT FOUND 或者SQLWARNING異常,並且沒有為這個異常定義異常處理器,那麼就會忽略這個異常,並且將控制流轉向下一個語句。如果產生了SQLEXCEPTION異常,並且沒有為這個異常定義異常處理器,那麼存儲過程就會失敗,並且會將控制流返回調用者。
以下示例聲明了兩個異常處理器。 EXIT處理器會在出現SQLEXCEPTION 或者SQLWARNING異常的時候被調用。EXIT處理器會在終止SQL程序之前,將名為stmt的變數設為"ABORTED",並且將控制流返回給調用者。UNDO處理器會將控制流返回給調用者之前,回滾存儲過程體中已經完成的SQL操作。

清單3:異常處理器示例
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING SET stmt = 'ABORTED';
DECLARE UNDO HANDLER FOR NOT FOUND;
如果預定義異常集不能滿足需求,就可以為特定的SQLSTATE值聲明定製異常,然後再為這個定製異常聲明處理器。語法如下:

清單4:定製異常處理器
DECLARE unique-name CONDITION FOR SQLSATE 'sqlstate'
處理器可以由單獨的存儲過程語句定義,也可以使用由BEGIN…END塊界定的復合語句定義。注意在執行符合語句的時候,SQLSATE和SQLCODE的值會被改變,如果需要保留異常前的SQLSATE和SQLCODE,就需要在執行復合語句的第一個語句把SQLSATE和SQLCODE賦予本地變數或參數。
通常,會為存儲過程定義一個執行狀態的輸出參數(例如:poGenStatus)。
declare sqlcode integer default 0;
begin
declare continue handler for sqlexception set ret = sqlcode;
declare continue handler for sqlwarning set ret = sqlcode;
declare continue handler for not found set ret = sqlcode;
end ; --異常的聲明

--異常的處理
if sqlcode< 0 or sqlcode= 100 then
set O_RetCod = RetCode;
set O_RetMsg = 'CLN02:產品實例關聯客戶過程出錯!';
insert into LOG.OPER_LOG_TAB(PROC_NAME,OBJ_TAB,REGION_COD,OPER_COUNT,ERR_CODE,DATA_TIME,OPER_TIME)
values('P_DW_CLEAN','GLOBAL TEMP',0,0,retcode,CHAR(last_3_mon_time),current TIMESTAMP);
return;
else
set RetCode = 0;
end if;

⑶ sql server中時間戳timestamp的使用

顯示數據時先取出timestamp到變數

更新,刪除操作時先比較變數和現在的timestamp, 一樣則操作

什麼問題,轉成byte[]

⑷ 表中有一個欄位名稱是timestamp時,如何處理在編寫觸發器和存儲過程的報錯問題

我的觸發器這么寫?create or replace trigger trg_pcp_item after insert on pcp_item for each rowbegin end trg_pcp_item; 它在【on pcp_item】就已經報錯了。。

⑸ jsp如何向oracle存儲過程傳遞日期類型的參數

java.util.Date date;
Timestamp timestamp = resultSet.getTimestamp(i);
if (timestamp != null)
date = new java.util.Date(timestamp.getTime()));

解釋一下:首先從結果集中拿到timestamp,然後作為參數傳入date中,就變成java.util.Date類型
然後轉成你想要的格式就ok了,一般用
DateFormat df=new SimpleDateFormat(format);
String result=df.format(date );

⑹ db2的過程中怎樣寫異常處理

CREATEPROCEDUREschema_name.proc_name
(
INparm1INTEGER,OUTparm2VARCHAR(1000)
)
SPECIFICPROC_YYZY_XYKCJZ
LANGUAGESQL
NOTDETERMINISTIC
NOEXTERNALACTION
MODIFIESSQLDATA
CALLEDONNULLINPUT
LB_MAIN:BEGINATOMIC
/*DECLARESYSTEMVARIABLES*/
DECLARESQLSTATECHAR(5);
DECLARESQLCODEINTEGER;
DECLAREV_SQLSTATECHAR(5);
DECLAREI_SQLCODEINTEGER;
DECLARESQL_CUR_AT_ENDINTEGER;
DECLARESQL_STMTVARCHAR(2000);
/*DECLAREUSER-DEFINEDVARIABLES*/
--DECLAREV_SEPARATORVARCHAR(50)DEFAULT',';
/*DECLARESTATICCURSOR*/
--DECLAREC1CURSOR/*WITHRETURN*/FOR
--SELECTcolumn1,column2...
--FROMtable_name
--ORDERBYcolumn1,column2...
--;
/*DECLAREDYNAMICCURSOR*/
--DECLAREC2CURSORFORS2;
/*DECLAREEXCEPTIONHANDLE*/
--異常聲明
BEGIN
VALUES(SQLCODE,SQLSTATE)INTOI_SQLCODE,V_SQLSTATE;
SETparm2=VALUE(parm2,'')
||'SYSTEM:SQLCODE='||RTRIM(CHAR(I_SQLCODE))
||',SQLSTATE='||VALUE(RTRIM(V_SQLSTATE),'')||';'
;
END;
_CUR_AT_END=1;
/*DECLARETEMPORARYTABLE*/
--
--(
--columnINTEGER
--);

/*SQLPROCEDUREBODY*/

ENDLB_MAIN;

上面的是我常用的一個存儲過程的代碼樣本



異常處理需要加在游標聲明之後,臨時表聲明之前(見DECLARE UNDO HANDLER FOR SQLEXCEPTION部分)



常用的異常處理方式分為三種:UNDO(回滾)、EXIT(退出)、CONTINUE(繼續執行)

DECLAREUNDO|EXIT|CONTINUEHANDLERFOR



異常處理的對象可以為針對指定的sqlstate代碼

DECLAREUNDO|EXIT|

也可以針對某些condition,如sql異常,sql警告,以及游標末尾

DECLAREUNDO|EXIT||SQLWARNING|NOTFOUND




異常處理的內容 ,可以是一些回滾,提交語句,也可以是日誌記錄等

DECLAREUNDO|EXIT|
BEGIN
--異常處理內容
END;



引用資料:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0004239.html

⑺ postgresql 存儲過程的事務處理

一個PostgreSQL存儲過程的例子

需求:
給出如下條件進行批處理編排
- 開始日期時間
- 重復間隔(分鍾)
- 重復次數
要求在檔期內重復安排節目播出, 比如: 2003.01.01 08:00 開始每隔240分鍾播出一次, 一共播出100次

資料庫表格(CO_SCHEDULE)
------------------------------
N_PROGID INT
DT_STARTTIME TIMESTAMP
DT_ENDTIME TIMESTAMP

存儲過程的實現:

create table co_schele(n_progid int,dt_starttime timestamp,dt_endtime timestamp);

//創建函數:
create function add_program_time(int4,timestamp,int4,int4,int4) returns bool as '
declare
prog_id alias for $1;
ration_min alias for $3;
period_min alias for $4;
repeat_times alias for $5;
i int;
starttime timestamp;
ins_starttime timestamp;
ins_endtime timestamp;
begin
starttime :=$2;
i := 0;
while i<repeat_times loop
ins_starttime := starttime;
ins_endtime := timestamp_pl_span(ins_starttime,ration_min || ''mins'');
starttime := timestamp_pl_span(ins_starttime,period_min || ''mins'');
insert into co_schele values(prog_id,ins_starttime,ins_endtime);
i := i+1;
end loop;
if i<repeat_times then
return false;
else
return true;
end if;
end;
'language 'plpgsql';

//執行函數:
select add_program_time(1,'2002-10-20 0:0:0','5','60','5');

//查看結果:select * from co_schele;
n_progid | dt_starttime | dt_endtime
----------+------------------------+------------------------
1 | 2002-10-20 00:00:00+08 | 2002-10-20 00:05:00+08
1 | 2002-10-20 01:00:00+08 | 2002-10-20 01:05:00+08
1 | 2002-10-20 02:00:00+08 | 2002-10-20 02:05:00+08
1 | 2002-10-20 03:00:00+08 | 2002-10-20 03:05:00+08
1 | 2002-10-20 04:00:00+08 | 2002-10-20 04:05:00+08

ps:
1.資料庫一載入 plpgsql語言。如沒有,
su - postgres
createlang plpgsql dbname
2.至於返回類型為bool,是因為我不知道如何讓函數不返回值。等待改進。

⑻ mysql存儲過程怎麼把日期時間轉時間戳

UNIX_TIMESTAMP

SELECT UNIX_TIMESTAMP('2015-04-29')

⑼ ORACLE資料庫. PL/SQL的時間戳

Oracle
Databse
9i資料庫引入了一種新特性,可以存儲時間戳。時間戳可以存儲世紀、4位年、月、日、時(以24小時格式)、分、秒。與DATE類型相比,時間戳具有以下優點:時間戳可以存儲秒的小數位 時間戳可以存儲時區。下面介紹時間戳類型。 時間戳類型類
型說
明TIMESTAMP[(seconds_precision)]存儲世紀、4位的年、月、日、時(以24小時格式)、分和秒。seconds_precision為可選參數,用於指定精度,該參數為一個整數,范圍從0~9,默認值為9;意思是表示秒的數字的小數點右邊可以存儲9位數字。如果試圖在秒的小數中保存超過TIMESTAMP存儲精度的數字,那麼該小數將被取整TIMESTAMP[(seconds_precision)]WITH
TIME
ZONE擴展TIMESTAMP,用於存儲時區TIMESTAMP[(seconds_precision)]WITH
LOCAL
TIME
ZONE擴展TIMESTAMP,將給定的時間值轉換成資料庫的本地時區。轉換過程稱為時間值的規格化(normalizingv_timestamp
:=
to_timestamp(to_char(sysdate,
'yyyy-mm-dd
hh24:mi:ss'),'yyyy-mm-dd
hh24:mi:ss.ff');
我認為這句話的意思就是把系統時間轉化為時間戳,目的是使時間更精確。