【问题标题】: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=>'教育')

【问题讨论】:

标签: stored-procedures plsql sqlplus


【解决方案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>

【讨论】:

  • 谢谢,感谢您的宝贵时间。
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多