oracle 在plsql中调用"〈“时参数的数目或类型错误

gkl3eglg  于 2023-02-11  发布在  Oracle
关注(0)|答案(1)|浏览(170)

这里我创建了一个过程,条件是聘用日期应该小于系统日期。它显示了一个错误。如何解决这个错误?

CREATE OR REPLACE PROCEDURE employees (hire_date IN NUMBER) IS   
BEGIN
  IF hire_date < SYSDATE THEN
    INSERT INTO emp (emp_id,
                     emp_name,
                     email,
                     phone_number,
                     hire_date,
                     job_id,
                     sal)
     VALUES (empinc.NEXTVAL,
             'ravi',
             'ravi@gmail.com',
             '6578940983456',
             '08/09/2021',
             'JUN_TECH',
             60000);
  ELSE
    DBMS_OUTPUT.PUT_LINE('failed');
  END IF;
END;
/
cuxqih21

cuxqih211#

sysdate是一个返回date数据类型值的函数。不能将其与数字(hire_date参数的数据类型)进行比较。
应该是

CREATE OR REPLACE PROCEDURE employees (hire_date IN DATE)
IS                                                  ----
BEGIN                                               this
   IF hire_date < SYSDATE

或者(虽然这是错误的)类似这样的代码(这取决于您为hire_date使用的格式;我选择了yyyymmdd):

CREATE OR REPLACE PROCEDURE employees (hire_date IN NUMBER)
IS
BEGIN
   IF hire_date < to_number(to_char(sysdate, 'yyyymmdd'))    --> this

相关问题