Oracle 在PL/SQL中,您已经创建了一个新函数,其标题和声明部分如下
职能员工加入日期 (p_emp_id编号) 返回日期 是 v_emp_加入日期; 开始 编译器对此函数不接受以下哪条语句Oracle 在PL/SQL中,您已经创建了一个新函数,其标题和声明部分如下,oracle,plsql,Oracle,Plsql,职能员工加入日期 (p_emp_id编号) 返回日期 是 v_emp_加入日期; 开始 编译器对此函数不接受以下哪条语句 返回系统日期 返回(“未找到日期”) 返回v_日期 这些都不是 第三,因为oracle在编译时检查未声明的变量。第二个将仅在运行时返回强制转换错误。答案可以是3或4: 备选案文1: 创建或替换功能员工加入日期( p_emp_id的编号 ) 返回日期 是 v_emp_加入日期; 开始 返回系统日期; 终止 / 编译时没有错误 备选案文2: 创建或替换功能员工加入日期( p_e
第三,因为oracle在编译时检查未声明的变量。第二个将仅在运行时返回强制转换错误。答案可以是3或4: 备选案文1:
创建或替换功能员工加入日期(
p_emp_id的编号
)
返回日期
是
v_emp_加入日期;
开始
返回系统日期;
终止
/
编译时没有错误
备选案文2:
创建或替换功能员工加入日期(
p_emp_id的编号
)
返回日期
是
v_emp_加入日期;
开始
返回(“未找到日期”);
终止
/
编译时没有错误
如果您尝试执行该过程:
声明
v_日期;
开始
v_日期:=员工加入日期(1);
DBMS_OUTPUT.PUT_LINE(到_CHAR(v_date,'YYYY-MM-DD'));
终止
/
然后它将输出一个异常:
但是,这是一个运行时异常,而不是编译时错误
但是,如果你做了一些相当愚蠢的事情:
ALTER SESSION SET NLS_DATE_FORMAT='“找不到日期”;
然后PL/SQL块和函数无错误运行,并输出当月的第1天:
备选案文3,第1版:
创建或替换功能员工加入日期(
p_emp_id的编号
)
返回日期
是
v_emp_加入日期;
开始
返回v_日期;
终止
/
给出以下编译时错误:
从用户错误中选择*;
然后它编译并运行,没有错误
如果您使用选项3的第二个版本,并在嵌套块中声明v#u date
,那么答案是#4;但是,如果您天真地使用返回v_date代码>没有delcaringv#u date
那么答案是#3
小提琴
ORA-01858: a non-numeric character was found where a numeric was expected
ORA-06512: at "FIDDLE_BUISIFXHIMAYWYOGMYBY.EMPLOYEE_JOINING_DATE", line 8
ORA-06512: at line 4
2020-09-01
NAME | TYPE | SEQUENCE | LINE | POSITION | TEXT | ATTRIBUTE | MESSAGE_NUMBER
:-------------------- | :------- | -------: | ---: | -------: | :---------------------------------------------- | :-------- | -------------:
EMPLOYEE_JOINING_DATE | FUNCTION | 1 | 8 | 10 | PLS-00201: identifier 'V_DATE' must be declared | ERROR | 201
EMPLOYEE_JOINING_DATE | FUNCTION | 2 | 8 | 3 | PL/SQL: Statement ignored | ERROR | 0