Sql te('2014年9月26日,'DD-MON-YYYY');Luke,非常感谢您指出错误1)pt.creation_date是date,因此我将其更改为pt.creation_date=to_date('2014年9月26日','DD-MON-YYYY')
Sql te('2014年9月26日,'DD-MON-YYYY');Luke,非常感谢您指出错误1)pt.creation_date是date,因此我将其更改为pt.creation_date=to_date('2014年9月26日','DD-MON-YYYY'),sql,oracle,date,Sql,Oracle,Date,te('2014年9月26日,'DD-MON-YYYY');Luke,非常感谢您指出错误1)pt.creation_date是date,因此我将其更改为pt.creation_date=to_date('2014年9月26日','DD-MON-YYYY');2) 将日期格式更正为('DD-MON-YYYY')。3) 作出分配声明l_start_date:=trunc(v_prj_start);和l_完成日期:=trunc(v_prj_完成);4) 将输出行更改为DBMS_output.put_行
te('2014年9月26日,'DD-MON-YYYY');Luke,非常感谢您指出错误1)pt.creation_date是date,因此我将其更改为pt.creation_date=to_date('2014年9月26日','DD-MON-YYYY');2) 将日期格式更正为('DD-MON-YYYY')。3) 作出分配声明l_start_date:=trunc(v_prj_start);和l_完成日期:=trunc(v_prj_完成);4) 将输出行更改为DBMS_output.put_行('Task start date to update to'| | to_char(l_start_date,'DD-MON-YYYY');DBMS_OUTPUT.put_line('Task completion date to update to'| | | to_char(l_completion_date,'DD-MON-YYYY));。当我现在运行它时,它不会显示任何错误,它显示的只是“匿名块已完成”,并且什么也没有发生。日期没有像我预期的那样更新。没有输出消息(尽管我已在;)上运行SET-SERVEROUTPUT,但基础表未按预期更新。我遗漏了什么?我也解决了最后一个问题。这是因为光标没有获取任何内容。一旦我将光标上的日期条件更改为>2014年9月25日,我就能够得到我想要的结果。Sylvain,谢谢你的评论,但正如Luke指出的,这不是必需的,因为变量已经定义为日期类型。
Declare
v_task_start DATE;
v_task_completion DATE;
v_prj_start DATE;
v_prj_completion DATE;
l_start_date DATE;
l_completion_date DATE;
v_task_id NUMBER;
v_prj_id NUMBER;
CURSOR c_tasks_to_update IS
SELECT
pt.TASK_ID,
pt.Project_id AS Task_Prj_Id,
pt.start_date AS Task_start,
pt.Completion_date AS Task_Completion,
ppa.start_date AS Project_start,
ppa.completion_date AS Project_completion
INTO
v_task_id, v_prj_id, v_task_start, v_task_completion, v_prj_start, v_prj_completion
FROM pa_tasks pt, pa_projects_all ppa
WHERE pt.project_id = ppa.project_id
AND pt.created_by = 1623
and to_date(pt.creation_date,'DD-MON-YY') = to_date('26-SEP-2014', 'DD-MON-YY');
BEGIN
FOR ctask_update in c_tasks_to_update
LOOP
v_task_start := ctask_update.Task_start;
v_task_completion := ctask_update.Task_Completion;
v_prj_start := ctask_update.Project_start;
v_prj_completion := ctask_update.Project_completion;
IF ((v_task_start <> v_prj_start) and (v_task_completion <> v_prj_completion))
THEN
DBMS_OUTPUT.put_line( 'Task Start date is not equal to Project start date,
Task completion date is not equal to Project completion date '
||v_task_start||' '||v_prj_start||' '||v_task_completion ||' '||
v_prj_completion);
l_start_date := to_date(trunc(v_prj_start),'DD_MON_YY');
/*SELECT START_DATE FROM PA_PROJECTS_ALL
INTO l_start_date
FROM pa_projects_all WHERE project_id = v_prj_id;*/
l_completion_date := to_date('trunc(v_prj_completion)','DD_MON_YY');
/*SELECT completion_date FROM PA_PROJECTS_ALL
INTO l_completion_date
FROM pa_projects_all WHERE project_id = v_prj_id;*/
DBMS_OUTPUT.put_line( 'Task start date to be updated to '||
to_char(l_start_date));
DBMS_OUTPUT.put_line( 'Task completion date to be updated to '||
to_char(l_completion_date));
End;
v_task_start := TO_DATE(ctask_update.Task_start,'DD-MON-YY');
v_task_completion := TO_DATE(ctask_update.Task_Completion,'DD-MON-YY');
v_prj_start := TO_DATE(ctask_update.Project_start,'DD-MON-YY');
v_prj_completion := TO_DATE(ctask_update.Project_completion,'DD-MON-YY');
and to_date(pt.creation_date,'DD-MON-YY') = to_date('26-SEP-2014', 'DD-MON-YY');
l_start_date := to_date(trunc(v_prj_start),'DD_MON_YY');
l_start_date := trunc(v_prj_start);
l_completion_date := to_date('trunc(v_prj_completion)','DD_MON_YY');
l_completion_date := to_date(trunc(v_prj_completion),'DD_MON_YY');
l_completion_date := trunc(v_prj_completion);
DBMS_OUTPUT.put_line( 'Task start date to be updated to '||
to_char(l_start_date));