有效/无效参数传递
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>
【讨论】:
谢谢,感谢您的宝贵时间。以上是关于有效/无效参数传递的主要内容,如果未能解决你的问题,请参考以下文章
SQL函数问题,提示传递给 LEFT 或 SUBSTRING 函数的长度参数无效。