存储过程 – Oracle中存储过程的默认值
发布时间:2020-12-12 15:13:44 所属栏目:百科 来源:网络整理
导读:我有一个存储过程如下. 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.当输入参数为空时,输入参数
我有一个存储过程如下.
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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |