Oracle PL/SQL—定义存储过程的数字参数的精度和比例
我有一个存储过程,可以将参数中的值插入表中。其中一个参数应允许具有精度和刻度的数字,以允许以下方式调用过程:Oracle PL/SQL—定义存储过程的数字参数的精度和比例,oracle,plsql,Oracle,Plsql,我有一个存储过程,可以将参数中的值插入表中。其中一个参数应允许具有精度和刻度的数字,以允许以下方式调用过程:executeoperation(10,10,2.5)。问题是似乎没有办法为PL/SQL中的参数定义这样的东西。当我将参数的类型设置为VARCHAR2并随后调用到\u number时,它会工作,但由于撇号的存在,这会改变调用过程的方式 那么有没有一种方法可以将一个数字以number(8,2)的格式传递给一个过程呢? 提前谢谢。我不确定我是否理解这个问题 你怎么了 create proced
executeoperation(10,10,2.5)
。问题是似乎没有办法为PL/SQL中的参数定义这样的东西。当我将参数的类型设置为VARCHAR2
并随后调用到\u number
时,它会工作,但由于撇号的存在,这会改变调用过程的方式
那么有没有一种方法可以将一个数字以number(8,2)
的格式传递给一个过程呢?
提前谢谢。我不确定我是否理解这个问题 你怎么了
create procedure operation (par_1 in number,
par_2 in number,
par_3 in number
)
as ...
它接受(10,10,2.5)
。那么
演示:
SQL> create table test (a number, b number, c number);
Table created.
SQL> create or replace procedure operation
2 (par_1 in number, par_2 in number, par_3 in number)
3 as
4 begin
5 insert into test (a, b, c) values (par_1, par_2, par_3);
6 end;
7 /
Procedure created.
SQL> exec operation (10, 10, 2.5);
PL/SQL procedure successfully completed.
SQL> select * from test;
A B C
---------- ---------- ----------
10 10 2,5
SQL>
不能为参数数据类型指定比例、精度或大小。@为什么不能?我没有找到对此的解释。@MaxMakhrov不知道为什么,但这是语言定义的一部分。如果需要限制比例、精度或大小,可以在过程中进行限制。