有效/无效参数传递

Posted

技术标签:

【中文标题】有效/无效参数传递【英文标题】:Valid/Invalid Parameter pass 【发布时间】:2018-04-10 13:32:04 【问题描述】:

有人可以用>= 符号为varchar 列解释什么登录究竟适用于参数传递吗?

代码

CREATE OR REPLACE PROCEDURE add_dept ( p_name

departments.department_name%TYPE DEFAULT .unknown ., p_loc

departments.location_id%TYPE DEFAULT 1700) IS BEGIN INSERT INTO

departments(department_id, department_name, loclation_id)

VALUES(dept_seq.NEXTVAL,p_name, p_loc); END add_dept; / You created the add_dept procedure above, and you now invoke the procedure in SQL *Plus.

问题

哪四个是有效的调用? (选择四个)

A.执行 add_dept(p_loc=>2500)

B.执行 add_dept(‘教育’, 2500)

C.执行 add_dept('2500', p_loc =>2500)

D.执行 add_dept(p_name=>'Education', 2500)

E.执行 add_dept(p_loc=>2500, p_name=>'教育')

【问题讨论】:

堆栈溢出不是在这里回答您的测试问题。 ***.com/help/on-topic 如果您格式化代码,这也将更容易回答。 您要查找的手册部分是Positional, Named, and Mixed Notation for Actual Parameters。 @TomLous:我遇到了这个问题,不知道为什么 D 无效 【参考方案1】:

关于它真的很容易测试,我不知道你为什么不自己做。

我已经修正了您的拼写错误(.unknown. 会是什么?点?)并删除了过程中不必要的部分,结果如下。 Oracle 回答了您的问题(即无效的过程调用有什么问题)。

SQL> create or replace procedure add_dept
  2    (p_name dept.dname%type default 'unknown',
  3     p_loc  dept.deptno%type default 99)
  4  is
  5  begin
  6    null;
  7  end;
  8  /

Procedure created.

SQL> -- A
SQL> EXECUTE add_dept(p_loc=>2500);

PL/SQL procedure successfully completed.

SQL>
SQL> -- B
SQL> EXECUTE add_dept('Education', 2500);

PL/SQL procedure successfully completed.

SQL>
SQL> -- C
SQL> EXECUTE add_dept('2500', p_loc =>2500);

PL/SQL procedure successfully completed.

SQL>
SQL> -- D
SQL> EXECUTE add_dept(p_name=>'Education', 2500);
BEGIN add_dept(p_name=>'Education', 2500); END;

                                    *
ERROR at line 1:
ORA-06550: line 1, column 37:
PLS-00312: a positional parameter association may not follow a named association
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored


SQL>
SQL> -- E
SQL> EXECUTE add_dept(p_loc=>2500, p_name=>'Education');

PL/SQL procedure successfully completed.

SQL>

【讨论】:

谢谢,感谢您的宝贵时间。

以上是关于有效/无效参数传递的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中将方法作为参数传递

SQL函数问题,提示传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

继承自作为模板参数传递的const类型

firebase 云消息传递请求包含无效参数

从 rexx 代码向 ispf 宏传递参数时出现无效长度错误

web3.js 调用传递函数返回 Solidity 函数的参数数量无效