【发布时间】:2015-11-16 22:03:03
【问题描述】:
我正在创建一个存储过程,它根据奖金和薪水计算总金额。 存储过程创建如下:
Create or replace procedure cal_sum( p_salary in number, p_bonus inout number, p_output out number)
Begin
p_bonus :=p_salary*bonus/100;
p_output :=p_bonus+p_salary;
End;
并使用匿名块调用存储过程,如下所示:
Declare
v_salary number := 2000;
v_bonus number := 10;
v_total char(10);
Begin
cal_sum(v_salary,v_bonus,v_total);
End;
上述程序运行良好,没有编译时错误。 我在上面的查询中理解的是 查询是如何工作的,即使存储过程和匿名块中的 p_output 和 v_total 参数的数据类型不同 pl/sql 是否支持数字到字符的隐式转换? 请帮忙
【问题讨论】:
-
有多篇文章深入介绍了隐式转换。 intermediatesql.com/oracle/…
-
对于您正在尝试的内容,函数难道不会比存储过程更合适吗?
-
以上查询只是一个例子,用来说明数据类型转换的场景
-
关于隐式数据类型转换,您需要记住的唯一一件事是:避免它。任何依赖它的代码都应该在代码审查中失败。