如何在使用PL SQL存储过程将值插入表中时在where子句中使用date

时间:2014-02-19 16:10:42

标签: oracle plsql plsqldeveloper

这是我在存储过程中使用的代码;

CREATE OR REPLACE PROCEDURE MY_STORE_PROCEDURE (new_date in date)
IS
BEGIN
execute immediate 'INSERT INTO TEMP_1 (  ID CHAR(10), 
                                         A_CNT NUMBER,
                                         JOIN_DT DATE,
                                      ) 
                                      SELECT 
                                         L1.ID,
                                         L1.A_CNT,
                                         L1.JOIN_DT,
                                      FROM ACTVY_1 L1 
                                      WHERE L1.JOIN_DT = new_date';
END;

===========================================================

下面是我用来调用存储过程的代码和传递值。 value是存储过程所用并用于从表中提取日期的日期。但它给了我错误。

DECLARE
  a_date   DATE;

BEGIN
a_date :=to_DATE ('01-NOV-2013', 'DD-MON-YYYY');
MY_STORE_PROCEDURE(a_date);
END;

请建议是否存在语法错误或问题。

1 个答案:

答案 0 :(得分:0)

根据您的示例,没有理由使用动态SQL。你也有一堆错误。试试这个:

CREATE OR REPLACE PROCEDURE MY_STORE_PROCEDURE (new_date IN DATE)
IS
BEGIN
   INSERT INTO TEMP_1 (ID, A_CNT, JOIN_DT)
      SELECT L1.ID, L1.A_CNT, L1.JOIN_DT
        FROM ACTVY_1 L1
       WHERE L1.JOIN_DT = new_date;
END;