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));