程序中有多个CURRENT TIMESTAMP [英] More than one CURRENT TIMESTAMP in a PROCEDURE

查看:74
本文介绍了程序中有多个CURRENT TIMESTAMP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个测试其他程序的程序。


Timings_Call

----------------- -

Id

团体

名称

文字


Timings_Log

------------------

Id

致电

开始

停止


调用填充,Log是为了保持时间。


数据类似于:


INSERT INTO Timings_Call(组,名称,文字)价值

(''报告1'',''单'',''Report_001_SP( ''''''''',')''),

(''报告1'',''全'',''Report_001_SP(''''''' ''',...)''),

(''报告2'','''',''Report_002_SP(''''值''''',... )''),

(''报告3'','''',''Report_003_SP('''''''''''''''''') >

脚本运行测试:


#!/ bin / ba sh $ />

db2 + o连接到......

db2 + oSET SCHEMA ...

db2 + oSET PATH ...,CURRENT PATH

eval" $(db2 -x" SELECT''db2 + o \" CALL Test_Timings_Call('' || CHAR(Id)

|| '')\"''FROM Timings_Call")"

db2 + o" CONNECT RESET"

db2 + o" TERMINATE"


调用程序:


DROP SPECIFIC PROCEDURE Test_Timings_Call


CREATE PROCEDURE Test_Timings_Call(IN_Id INT)

SPECIFIC Test_Timings_Call

BEGIN


DECLARE Start_Time TIMESTAMP;

DECLARE Stop_Time TIMESTAMP;

DECLARE查询VARCHAR(256);


SELECT文本INTO查询来自Timings_Call

WHERE Timings_Call.Id = IN_Id;


SET Start_Time = CURRENT TIMESTAMP;

EXECUTE IMMEDIATE查询;

SET Stop_Time = CURRENT TIMESTAMP;


INSERT INTO Timings_Log(通话,开始,停止)

VALUES(IN_Id,Start_Time,Stop_Time);


结束


问题是TABLE中的时间不准确。作为测试,来自

a Windows客户端框,我剪切并粘贴了一个脚本:


C:\Program Files \ SQLLIB \BIN> db2 -x VALUES CURRENT TIMESTAMP

2006-03-01-13.46.36.543961

C:\Program Files \ SQLLIB \BIN> db2 + o CALL Test_Timings_Call(13)

C:\Program Files \ SQLLIB \BIN> db2 -x VALUES CURRENT TIMESTAMP

2006- 03-01-13.48.20.096003


C:\Program Files \ SQLLIB \BIN>

C:\Program Files \ SQLLIB \\ \\ BIN> db2" SELECT * FROM Timings_Log WHERE Call =

13"


ID CALL START STOP

--- -------- ----------- --------------------------

--------------------------

13 13 2006-02-22-11.26.45.724546

2006-02-22-11.26.45.806898

50 13 2006-02-24-10.50.24.530798

2006-02-24-10.50。 24.605326

83 13 2006-02-28-16.24.48.837816

2006-02-28-16.24.48.845906

84 13 2006-03- 01-13.46.36.690016

2006-03-01-13.46.36.744089


4条记录被选中。


命令行CURRENT TIMESTAMPs显示查询大约需要1.45

分钟。然而,日志显示它不到一秒钟。


这里发生了什么?而且,我将如何获得实际的

时间?


B.

I have a PROCEDURE that test other PROCEDUREs.

Timings_Call
------------------
Id
Group
Name
Text

Timings_Log
------------------
Id
Call
Start
Stop

Call gets populated and Log is to keep the times.

Data similar to:

INSERT INTO Timings_Call (Group, Name, Text) VALUES
(''Report 1'', ''Single'', ''Report_001_SP(''''values'''', ...)''),
(''Report 1'', ''All'', ''Report_001_SP(''''values'''', ...)''),
(''Report 2'', '''', ''Report_002_SP(''''values'''', ...)''),
(''Report 3'', '''', ''Report_003_SP(''''values'''', ...)'')

A script runs the tests:

#!/bin/bash

db2 +o "CONNECT TO ..."
db2 +o "SET SCHEMA ..."
db2 +o "SET PATH ..., CURRENT PATH"
eval "$(db2 -x "SELECT ''db2 +o \"CALL Test_Timings_Call('' || CHAR(Id)
|| '')\"'' FROM Timings_Call")"
db2 +o "CONNECT RESET"
db2 +o "TERMINATE"

which CALLs a PROCEDURE:

DROP SPECIFIC PROCEDURE Test_Timings_Call

CREATE PROCEDURE Test_Timings_Call(IN_Id INT)
SPECIFIC Test_Timings_Call
BEGIN

DECLARE Start_Time TIMESTAMP;
DECLARE Stop_Time TIMESTAMP;
DECLARE Query VARCHAR(256);

SELECT Text INTO Query FROM Timings_Call
WHERE Timings_Call.Id = IN_Id;

SET Start_Time = CURRENT TIMESTAMP;
EXECUTE IMMEDIATE Query;
SET Stop_Time = CURRENT TIMESTAMP;

INSERT INTO Timings_Log(Call, Start, Stop)
VALUES(IN_Id, Start_Time, Stop_Time);

END

The problem is the times in the TABLE are not accurate. As a test, from
a Windows client box, i cut and pasted a script:

C:\Program Files\SQLLIB\BIN>db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.46.36.543961

C:\Program Files\SQLLIB\BIN>db2 +o "CALL Test_Timings_Call(13)"

C:\Program Files\SQLLIB\BIN>db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.48.20.096003

C:\Program Files\SQLLIB\BIN>
C:\Program Files\SQLLIB\BIN>db2 "SELECT * FROM Timings_Log WHERE Call =
13"

ID CALL START STOP
----------- ----------- --------------------------
--------------------------
13 13 2006-02-22-11.26.45.724546
2006-02-22-11.26.45.806898
50 13 2006-02-24-10.50.24.530798
2006-02-24-10.50.24.605326
83 13 2006-02-28-16.24.48.837816
2006-02-28-16.24.48.845906
84 13 2006-03-01-13.46.36.690016
2006-03-01-13.46.36.744089

4 record(s) selected.

The command line CURRENT TIMESTAMPs show the query taking about 1.45
minutes. The log, however, shows it as less than a second.

What is happening here? And, how would i go about getting the actual
time?

B.

推荐答案

(db2 -x" SELECT''db2 + o \" CALL Test_Timings_Call(''|| CHAR(Id)

||'')\\ \\'''来自Timings_Call)

db2 + o连接重置

db2 + o终止

调用程序:


DROP SPECIFIC PROCEDURE Test_Timings_Call


CREATE PROCEDURE Test_Timings_Call(IN_Id INT)

SPECIFIC Test_Timings_Call

BEGIN


DECLARE Start_Time TIMESTAMP;

DECLARE Stop_Time TIMESTAMP;

DECLARE查询VARCHAR(256);


SELECT文本INTO查询来自Timings_Call

WHERE Timings_Call.Id = IN_Id;


SET Start_Time = CURRENT TIMESTAMP;

EXECUTE IMMEDIATE查询;

SET Stop_Time = CURRENT TIMESTAMP;


INSER T INTO Timings_Log(通话,开始,停止)

VALUES(IN_Id,Start_Time,Stop_Time);


结束


问题是TABLE中的时间不准确。作为测试,来自

a Windows客户端框,我剪切并粘贴了一个脚本:


C:\Program Files \ SQLLIB \BIN> db2 -x VALUES CURRENT TIMESTAMP

2006-03-01-13.46.36.543961

C:\Program Files \ SQLLIB \BIN> db2 + o CALL Test_Timings_Call(13)

C:\Program Files \ SQLLIB \BIN> db2 -x VALUES CURRENT TIMESTAMP

2006- 03-01-13.48.20.096003


C:\Program Files \ SQLLIB \BIN>

C:\Program Files \ SQLLIB \\ \\ BIN> db2" SELECT * FROM Timings_Log WHERE Call =

13"


ID CALL START STOP

--- -------- ----------- --------------------------

--------------------------

13 13 2006-02-22-11.26.45.724546

2006-02-22-11.26.45.806898

50 13 2006-02-24-10.50.24.530798

2006-02-24-10.50。 24.605326

83 13 2006-02-28-16.24.48.837816

2006-02-28-16.24.48.845906

84 13 2006-03- 01-13.46.36.690016

2006-03-01-13.46.36.744089


4条记录被选中。


命令行CURRENT TIMESTAMPs显示查询大约需要1.45

分钟。然而,日志显示它不到一秒钟。


这里发生了什么?而且,我将如何获得实际的

时间?


B.

(db2 -x "SELECT ''db2 +o \"CALL Test_Timings_Call('' || CHAR(Id)
|| '')\"'' FROM Timings_Call")"
db2 +o "CONNECT RESET"
db2 +o "TERMINATE"

which CALLs a PROCEDURE:

DROP SPECIFIC PROCEDURE Test_Timings_Call

CREATE PROCEDURE Test_Timings_Call(IN_Id INT)
SPECIFIC Test_Timings_Call
BEGIN

DECLARE Start_Time TIMESTAMP;
DECLARE Stop_Time TIMESTAMP;
DECLARE Query VARCHAR(256);

SELECT Text INTO Query FROM Timings_Call
WHERE Timings_Call.Id = IN_Id;

SET Start_Time = CURRENT TIMESTAMP;
EXECUTE IMMEDIATE Query;
SET Stop_Time = CURRENT TIMESTAMP;

INSERT INTO Timings_Log(Call, Start, Stop)
VALUES(IN_Id, Start_Time, Stop_Time);

END

The problem is the times in the TABLE are not accurate. As a test, from
a Windows client box, i cut and pasted a script:

C:\Program Files\SQLLIB\BIN>db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.46.36.543961

C:\Program Files\SQLLIB\BIN>db2 +o "CALL Test_Timings_Call(13)"

C:\Program Files\SQLLIB\BIN>db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.48.20.096003

C:\Program Files\SQLLIB\BIN>
C:\Program Files\SQLLIB\BIN>db2 "SELECT * FROM Timings_Log WHERE Call =
13"

ID CALL START STOP
----------- ----------- --------------------------
--------------------------
13 13 2006-02-22-11.26.45.724546
2006-02-22-11.26.45.806898
50 13 2006-02-24-10.50.24.530798
2006-02-24-10.50.24.605326
83 13 2006-02-28-16.24.48.837816
2006-02-28-16.24.48.845906
84 13 2006-03-01-13.46.36.690016
2006-03-01-13.46.36.744089

4 record(s) selected.

The command line CURRENT TIMESTAMPs show the query taking about 1.45
minutes. The log, however, shows it as less than a second.

What is happening here? And, how would i go about getting the actual
time?

B.


我不确定你真正想要的是什么,但是你厌倦了使用

DB2batch。

它会给你我认为你可以成为的寻找。


" Brian Tkatch" <马*********** @ ThePentagon.com>在消息中写道

news:11 ********************** @ i40g2000cwc.googlegr oups.com ...
I''m not sure what you are realy trying to get, but have you tired using
DB2batch.
It will give you what I think you could be looking for.

"Brian Tkatch" <Ma***********@ThePentagon.com> wrote in message
news:11**********************@i40g2000cwc.googlegr oups.com...
我有一个测试其他程序的程序。

Timings_Call
------------------
Id
集团
名称
文字

Timings_Log
------------------
我或
致电
开始
停止

呼叫填充和日志是为了保持时间。

数据类似于:

INSERT INTO Timings_Call(组,名称,文字)价值
(''报告1'',''单'',''Report_001_SP('''''''''',... )''),
(''报告1'',''全'',''报告_001_SP(''''值'''',......)''),
( ''报告2'','''',''Report_002_SP(''''值'''',...)''),
(''报告3'','''' ,''Report_003_SP(''''''''',')''')

脚本运行测试:

# !/ bin / bash

db2 + o" CONNECT TO ..."
db2 + o" SET SCHEMA ..."
db2 + o" SET PATH ...,CURRENT PATH"
eval"
I have a PROCEDURE that test other PROCEDUREs.

Timings_Call
------------------
Id
Group
Name
Text

Timings_Log
------------------
Id
Call
Start
Stop

Call gets populated and Log is to keep the times.

Data similar to:

INSERT INTO Timings_Call (Group, Name, Text) VALUES
(''Report 1'', ''Single'', ''Report_001_SP(''''values'''', ...)''),
(''Report 1'', ''All'', ''Report_001_SP(''''values'''', ...)''),
(''Report 2'', '''', ''Report_002_SP(''''values'''', ...)''),
(''Report 3'', '''', ''Report_003_SP(''''values'''', ...)'')

A script runs the tests:

#!/bin/bash

db2 +o "CONNECT TO ..."
db2 +o "SET SCHEMA ..."
db2 +o "SET PATH ..., CURRENT PATH"
eval "


(db2 -x" SELECT''db2 + o \" CALL Test_Timings_Call(''||| CHAR(Id)
|| '')\"''FROM Timings_Call")"
db2 + o" CONNECT RESET"
db2 + o" TERMINATE"

调用程序:

DROP SPECIFIC PROCEDURE Test_Timings_Call

创建程序Test_Timings_Call(IN_Id INT)
SPECIFIC Test_Timings_Call
BEGIN

DECLARE Start_Time TIMESTAMP ;
DECLARE Stop_Time TIMESTAMP;
DECLARE查询VARCHAR(256);

选择文本INTO查询来自Timings_Call
WHERE Timings_Call.Id = IN_Id;

SET Start_Time = CURRENT TIMESTAMP;
EXECUTE IMMEDIATE查询;
SET Stop_Time = CURRENT TIMESTAMP;

插入Timings_Log(呼叫,启动,停止)
VALUES (IN_Id,Start_Time,Stop_Time);

结束

问题是TABLE中的时间不准确。作为测试,从Windows客户端框中,我剪切并粘贴了一个脚本:

C:\Program Files \ SQLLIB \BIN> db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.46.36.543961
C:\Program Files \ SQLLIB \BIN> db2 + oCALL Test_Timings_Call(13)"

C:\Program Files \ SQLLIB \BIN> db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.48.20.096003

C:\Program Files \ SQLLIB \BIN>
C:\Program Files \ SQLLIB \BIN> db2" SELECT * FROM Timings_Log WHERE Call =
13"

ID CALL START STOP
----------- ----------- ------------------------ -
--------------------------
13 13 2006-02-22-11.26.45.724546 2006-02-22-11.26.45.806898
50 13 2006-02-24-10.50.24.530798
2006-02-24-10.50.24.605326
83 13 2006-02-28- 16.24.48.837816
2006-0 2-28-16.24.48.845906
84 13 2006-03-01-13.46.36.690016
2006-03-01-13.46.36.744089

4条记录被选中。

命令行CURRENT TIMESTAMPs显示查询大约需要1.45分钟。然而,日志显示它不到一秒钟。

这里发生了什么?而且,我将如何获得实际的时间?

B。
(db2 -x "SELECT ''db2 +o \"CALL Test_Timings_Call('' || CHAR(Id)
|| '')\"'' FROM Timings_Call")"
db2 +o "CONNECT RESET"
db2 +o "TERMINATE"

which CALLs a PROCEDURE:

DROP SPECIFIC PROCEDURE Test_Timings_Call

CREATE PROCEDURE Test_Timings_Call(IN_Id INT)
SPECIFIC Test_Timings_Call
BEGIN

DECLARE Start_Time TIMESTAMP;
DECLARE Stop_Time TIMESTAMP;
DECLARE Query VARCHAR(256);

SELECT Text INTO Query FROM Timings_Call
WHERE Timings_Call.Id = IN_Id;

SET Start_Time = CURRENT TIMESTAMP;
EXECUTE IMMEDIATE Query;
SET Stop_Time = CURRENT TIMESTAMP;

INSERT INTO Timings_Log(Call, Start, Stop)
VALUES(IN_Id, Start_Time, Stop_Time);

END

The problem is the times in the TABLE are not accurate. As a test, from
a Windows client box, i cut and pasted a script:

C:\Program Files\SQLLIB\BIN>db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.46.36.543961

C:\Program Files\SQLLIB\BIN>db2 +o "CALL Test_Timings_Call(13)"

C:\Program Files\SQLLIB\BIN>db2 -x VALUES CURRENT TIMESTAMP
2006-03-01-13.48.20.096003

C:\Program Files\SQLLIB\BIN>
C:\Program Files\SQLLIB\BIN>db2 "SELECT * FROM Timings_Log WHERE Call =
13"

ID CALL START STOP
----------- ----------- --------------------------
--------------------------
13 13 2006-02-22-11.26.45.724546
2006-02-22-11.26.45.806898
50 13 2006-02-24-10.50.24.530798
2006-02-24-10.50.24.605326
83 13 2006-02-28-16.24.48.837816
2006-02-28-16.24.48.845906
84 13 2006-03-01-13.46.36.690016
2006-03-01-13.46.36.744089

4 record(s) selected.

The command line CURRENT TIMESTAMPs show the query taking about 1.45
minutes. The log, however, shows it as less than a second.

What is happening here? And, how would i go about getting the actual
time?

B.



这篇关于程序中有多个CURRENT TIMESTAMP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆