存储过程 – Oracle中存储过程的默认值

前端之家收集整理的这篇文章主要介绍了存储过程 – Oracle中存储过程的默认值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个存储过程如下.
CREATE OR REPLACE PROCEDURE TEST(X IN VARCHAR2 DEFAULT 'P',Y IN NUMBER DEFAULT 1) AS
 BEGIN
 DBMS_OUTPUT.PUT_LINE('X'|| X||'--'||'Y'||Y);
 END;

当我执行上述过程

EXEC TEST(NULL,NULL);

它将打印X-Y.当输入参数为空时,输入参数不会默认为过程签名中的指定值

.那么使用默认值呢?如果我们传递null值作为输入,并且我们要用默认值替换null值怎么办?

默认值仅在未指定参数时使用.在您的情况下,您确实指定了两个参数 – 两个都是提供的,值为NULL. (是的,在这种情况下,NULL被认为是一个真正的价值:-).尝试:
EXEC TEST()

分享享受.

附录:过程参数的默认值当然被埋在某个系统表中(请参见SYS.ALL_ARGUMENTS视图),但从视图中获取默认值涉及从LONG字段中提取文本,并且可能会被证明是比它更值得痛苦.简单的方法是在程序中添加一些代码

CREATE OR REPLACE PROCEDURE TEST(X IN VARCHAR2 DEFAULT 'P',Y IN NUMBER DEFAULT 1)
AS
  varX VARCHAR2(32767) := NVL(X,'P');
  varY NUMBER          := NVL(Y,1);
BEGIN
  DBMS_OUTPUT.PUT_LINE('X=' || varX || ' -- ' || 'Y=' || varY);
END TEST;

猜你在找的Oracle相关文章