程序中有多个CURRENT TIMESTAMP [英] More than one CURRENT TIMESTAMP in a PROCEDURE
问题描述
我有一个测试其他程序的程序。
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屋!