千家信息网

2011-10-14 对变量的引用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,http://www.itpub.net/thread-1499223-5-1.html46 楼星期一我写了这个存储过程:CREATE OR REPLACE PROCEDURE plch_show_a
千家信息网最后更新 2026年11月01日2011-10-14 对变量的引用

http://www.itpub.net/thread-1499223-5-1.html

46 楼


星期一我写了这个存储过程:

CREATE OR REPLACE PROCEDURE plch_show_amounts (   amount1_in   IN NUMBER,  amount2_in   IN NUMBER)ISBEGIN   DBMS_OUTPUT.put_line (      TO_CHAR (plch_show_amounts.amount1_in, 'FML999G999D99'));   DBMS_OUTPUT.put_line (      TO_CHAR (plch_show_amounts.amount2_in, 'FML999G999D99'));END;/

星期二,我有个同事觉得自己比任何人都知道该如何写好代码,他批评过程中出现的重复代码。"你为什么不把重复的代码放到一个嵌套的子过程?那样的话,假如你需要修改显示格式,或者其他和显示金额相关的东西,你只需修改一个地方。"
好吧,我也没法反对。所以我把代码移入一个嵌套的子过程。实际上,我在推出一个能使用的程序版本之前也这么干过几次。
下面的选项中哪些包含了一个对原始的plch_show_amounts的"重构",从而在我执行这段代码之后:

BEGIN   plch_show_amounts (100.45, 452666.77);END;/

我在屏幕上会看到这样的输出:

$100.45$452,666.77

(A)

CREATE OR REPLACE PROCEDURE plch_show_amounts (   amount1_in   IN NUMBER,  amount2_in   IN NUMBER)IS   PROCEDURE show_one (amount_in IN NUMBER)   AS   BEGIN      DBMS_OUTPUT.put_line (         TO_CHAR (amount1_in, 'FML999G999D99'));   END;BEGIN   show_one (plch_show_amounts.amount1_in);   show_one (plch_show_amounts.amount2_in);END;/
SQL> BEGIN  2     plch_show_amounts (100.45, 452666.77);  3  END;  4  /¥100.45¥100.45PL/SQL procedure successfully completedSQL>

(B)

CREATE OR REPLACE PROCEDURE plch_show_amounts (   amount1_in   IN NUMBER,  amount2_in   IN NUMBER)IS   PROCEDURE show_one (amount_in IN NUMBER)   AS   BEGIN      DBMS_OUTPUT.put_line (         TO_CHAR (amount_in, 'FML999G999D99'));   END;BEGIN   show_one (plch_show_amounts.amount1_in);   show_one (plch_show_amounts.amount2_in);END;/
SQL> BEGIN  2     plch_show_amounts (100.45, 452666.77);  3  END;  4  /¥100.45¥452,666.77PL/SQL procedure successfully completedSQL>

(C)

CREATE OR REPLACE PROCEDURE plch_show_amounts (   amount1_in   IN NUMBER,  amount2_in   IN NUMBER)IS   PROCEDURE show_one (amount1_in IN NUMBER)   AS   BEGIN      DBMS_OUTPUT.put_line (         TO_CHAR (amount1_in, 'FML999G999D99'));   END;BEGIN   show_one (plch_show_amounts.amount1_in);   show_one (plch_show_amounts.amount2_in);END;/
SQL> BEGIN  2     plch_show_amounts (100.45, 452666.77);  3  END;  4  /¥100.45¥452,666.77PL/SQL procedure successfully completedSQL>

(D)

CREATE OR REPLACE PROCEDURE plch_show_amounts (   amount1_in   IN NUMBER,  amount2_in   IN NUMBER)IS   PROCEDURE show_one (amount1_in IN NUMBER)   AS   BEGIN      DBMS_OUTPUT.put_line (         TO_CHAR (plch_show_amounts.amount1_in, 'FML999G999D99'));   END;BEGIN   show_one (plch_show_amounts.amount1_in);   show_one (plch_show_amounts.amount2_in);END;/
SQL> BEGIN  2     plch_show_amounts (100.45, 452666.77);  3  END;  4  /¥100.45¥100.45PL/SQL procedure successfully completedSQL>


答案BC

http://www.itpub.net/thread-1499223-6-1.html 52楼

Steven 建议你仔细审查在内嵌子过程里对全局变量、自身参数的引用情况。在很多情况下,最好把内嵌子过程转移出来,便于代码共享和调试。


知识点后补

代码 过程 情况 星期 变量 原始 那样的话 东西 全局 参数 只需 同事 地方 实际 实际上 屏幕 建议 最好 格式 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 河南云网互联网络科技有限公司 广州紫鲸互联网科技有限公司 科技互联网技术 北京互联网科技有限公司 北京禾田雨橡互联网科技 互联网金融和金融科技 中国科技互联网公司收入 宁夏众和广鑫互联网科技有限公司 栖莱科技互联网股份有限公司 智腾互联网科技有限公司 华夏互联网科技业 亳州好赞互联网科技有限公司 迪庆互联网科技招生 中和天地互联网科技有限公司 南通创西澳互联网科技有限公司 互联网公司高科技产品 云南省自由互联网科技有限公司 上海乐五互联网科技有限公司 颐高云石互联网科技 科技制造互联网公司 互联网科技论文 互联网科技公司有哪些 盛创互联网科技有限公司 广州优美互联网科技 深圳国际航运科技和互联网 链环科技传统企业怎么转型互联网 爱医互联网络科技 上海钢联属于互联网科技股吗 九思连强互联网电子科技有限公司
0