首先写了一个包,包头声明了个自定义数组类型:TYPE lgn IS TABLE OF NVARCHAR2(20);
在包体里写了存储过程如下
procedure country_languages
(
country_n in NVARCHAR2,
c_n out NVARCHAR2,
l_ns out lgn,
ofls out lgn
) as
。。现在存储过程编译通过,但是在命令行里调用存储过程时出错:
SQL> declare
2 -- Local variables here
3 i integer;
4 TYPE lgn IS VARRAY(20) OF NVARCHAR2(20); --可变数组
5 c_n NVARCHAR2(20);
6 l_ns varray;
7 ofls varray;
8 begin
9 -- Test statements here
10 traveler_assistance_package.country_languages('巴西', c_n,l_ns, ofls);
11 end;
12 /
l_ns varray;
*
第 6 行出现错误:
ORA-06550: 第 6 行, 第 13 列:
PLS-00201: 必须声明标识符 'VARRAY'
ORA-06550: 第 6 行, 第 13 列:
PL/SQL: Item ignored
ORA-06550: 第 7 行, 第 13 列:
PLS-00201: 必须声明标识符 'VARRAY'
ORA-06550: 第 7 行, 第 13 列:
PL/SQL: Item ignored
ORA-06550: 第 10 行, 第 61 列:
PLS-00320: 此表达式的类型声明不完整或格式不正确
ORA-06550: 第 10 行, 第 3 列:
PL/SQL: Statement ignored并且在JSP里面调用的话,也会提示出错:
java.sql.SQLException: 无效的名称模式: FOF.lgn明明lgn在包头里面已经声明了,怎么会出错呢?
是不是数组lgn没有初始化呢?我也不知道在哪里初始化大侠救救我们吧
在包体里写了存储过程如下
procedure country_languages
(
country_n in NVARCHAR2,
c_n out NVARCHAR2,
l_ns out lgn,
ofls out lgn
) as
。。现在存储过程编译通过,但是在命令行里调用存储过程时出错:
SQL> declare
2 -- Local variables here
3 i integer;
4 TYPE lgn IS VARRAY(20) OF NVARCHAR2(20); --可变数组
5 c_n NVARCHAR2(20);
6 l_ns varray;
7 ofls varray;
8 begin
9 -- Test statements here
10 traveler_assistance_package.country_languages('巴西', c_n,l_ns, ofls);
11 end;
12 /
l_ns varray;
*
第 6 行出现错误:
ORA-06550: 第 6 行, 第 13 列:
PLS-00201: 必须声明标识符 'VARRAY'
ORA-06550: 第 6 行, 第 13 列:
PL/SQL: Item ignored
ORA-06550: 第 7 行, 第 13 列:
PLS-00201: 必须声明标识符 'VARRAY'
ORA-06550: 第 7 行, 第 13 列:
PL/SQL: Item ignored
ORA-06550: 第 10 行, 第 61 列:
PLS-00320: 此表达式的类型声明不完整或格式不正确
ORA-06550: 第 10 行, 第 3 列:
PL/SQL: Statement ignored并且在JSP里面调用的话,也会提示出错:
java.sql.SQLException: 无效的名称模式: FOF.lgn明明lgn在包头里面已经声明了,怎么会出错呢?
是不是数组lgn没有初始化呢?我也不知道在哪里初始化大侠救救我们吧
解决方案 »
- 请教一个关于 11g r2 emca的问题
- 学习oracle数据库之路
- OracleCSService 超长时间启动,寻求解决方法。
- 小弟刚学ORACLE 在写一个飞常简单的存储过程都有一个错误大哥们进来给俺说说吧 小弟在这谢谢了
- 按照日期汇总数据,如果这一天没有数据,则统计的结果会漏掉这一天,但是把数据倒入Excel中,引用数据很容易出错。
- 在csdn上提问:JDBC连接oracle的问题.
- 数据库优化问题!各位大侠帮帮忙.!
- 救急!救急!怎样在oralce中插入长度大于4000的字符串!
- 在线等待求教,oracle9.2.0.1安装问题
- copy from 的问题
- oracle存储过程,输出参数为数组的问题?看在圣诞节苦苦钻研的份上,救命啊~~
- 请问oracle的日志文件有哪些?如何更改存储位置?
你在写plsql块的时候和你包头你声明的type是两个不同的类型,所以他肯定和你包体里声明的type
不一致。你可以把包头你的type声明为一个全局的,使用
create or replace TYPE lgn IS VARRAY(20) OF NVARCHAR2(20);
然后在plsql和包里使用同一个type类型就可以了
good luck!!
是一个人?
--已回复
http://topic.csdn.net/u/20101226/00/3f6b66bf-cdb8-4abb-b8e7-d37b0a23b9d9.html?78320