set serveroutput oncreate or replace procedure test
(
value in varchar2
)
as
v_value varchar2(20);
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/这样执行时没有问题的
===============================================================================
set serveroutput oncreate or replace procedure test
(
value in varchar2
)
as
v_value varchar2;
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/这样执行会报错PLS-OO215:String length constraints must be in range(1..32767)
==============================================================================
set serveroutput oncreate or replace procedure test
(
value in varchar2(20)
)
as
v_value varchar2;
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/这样执行也会报错
PLS-00103:Encountered the symbol "(" when expecting one of the following:
:= . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.
===============================================================================
为什么在参数里不能指定长度而在本地变量的地方却必须指定长度?
请帮忙解释一下这两个错误
(
value in varchar2
)
as
v_value varchar2(20);
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/这样执行时没有问题的
===============================================================================
set serveroutput oncreate or replace procedure test
(
value in varchar2
)
as
v_value varchar2;
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/这样执行会报错PLS-OO215:String length constraints must be in range(1..32767)
==============================================================================
set serveroutput oncreate or replace procedure test
(
value in varchar2(20)
)
as
v_value varchar2;
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/这样执行也会报错
PLS-00103:Encountered the symbol "(" when expecting one of the following:
:= . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.
===============================================================================
为什么在参数里不能指定长度而在本地变量的地方却必须指定长度?
请帮忙解释一下这两个错误
解决方案 »
- ORACLE PERFORMANCE MONITOR tools
- !!动态取检索值作为字段列表
- 用sys登陆后怎么访问其他用户的系统表?
- Select error: ORA-01114: IO Error writing block to file %s (block #%s)
- 机器改名oracle不能连接???
- 如何查找主机字符串?什么命令?
- 急!急!急!如何在hp unix中安装oracle8
- delete 记录的问题?
- 请问在developer 2000中后缀为fmx的文件是如何生成的?在线给分!
- 谁有ORACLE的错误信息文档,我急着要。
- open_cursor问题
- Oracle查询语句的优化
带参数的cursor的参数也只需要声明类型不必须指定长度(精度);
只有单独声明的变量需要指定长度(精度);不只是varchar2如此,number等其他类型也是如此
这样执行会报错PLS-OO215:String length constraints must be in range(1..32767) 是因为
v_value varchar2;
这里不对
要改成
v_value varchar2(100); --需要设定长度。 参数和返回值的类型不要设置长度,但是变量需要===============================================================================
为什么在参数里不能指定长度而在本地变量的地方却必须指定长度? 同上面的解释。参数和返回值的类型不要设置长度,但是变量需要
set serveroutput oncreate or replace procedure test
(
value in number
)
as
v_value number;
begin
v_value:=value;
dbms_output.put_line(v_value);
end;
/
刚才查了下:Number(p,s):P和s都是可选的。P指精度(precision),即总位数。默认情况下精度为38。精度的取值范围为1~38。S指小数位(scale),小数点右边的位数。小数点位数的合法值为-84~127。小数位的默认值由精度来决定。如果没有指定精度,小数位默认为最大的取值区间。如果指定了精度,没有指定小数位。小数位默认为0(即没有小数位)。精度和小数位不会影响数据如何存储,只会影响允许哪些数值及数值如何舍入。