oracle开发工具:PLSQL
自定义数据类型:create or replace type Userconfig as object
(
  -- Attributes
  CONFIG_ID  integer,
  USER_ID integer,
  CONFIGDEF_ID integer,
  LINE_NO integer,
  CONFIG_NAME VARCHAR2(100),
  DESCR VARCHAR2(500),
  VALUE VARCHAR2(100)
);
create or replace type userconfig_table as table of userconfig;存储过程:create or replace procedure pro_addsystemsettings(listnode  Userconfig_table) is
 mynumic integer;
begin
  for i in 1..listnode.count
  loop
   select  count(*) into mynumic from GIS_USERCONFIG;
  end loop;
end pro_addsystemsettings;报错:
 select  count(*) into mynumic from GIS_USERCONFIG;处出错。 
------------------------------------------------------------- 
具体错误如下:
  
Compilation errors for PROCEDURE TBFK.PRO_ADDSYSTEMSETTINGSError: PL/SQL: ORA-06552: PL/SQL: Compilation unit analysis terminated
       ORA-06553: PLS-320: 此表达式的类型声明不完整或格式不正确
Line: 6
Text: select  count(*) into mynumic from GIS_USERCONFIG;Error: PL/SQL: SQL Statement ignored
Line: 6
Text: select  count(*) into mynumic from GIS_USERCONFIG;
--------------------------------------------------------------------
整个存储过程就一个循环加一个查询,结果报错,是工具原因还是环境原因,才接触oracle,如有遇到上述问题的人请给予
解决方案谢谢!

解决方案 »

  1.   

    select  count(*) into mynumic from GIS_USERCONFIG;
    这张表一共多少条数据啊?
      

  2.   

    给变量:mynumic 初始化一个0试试。
      

  3.   

    把它的定义改成这个试试:
    vn_mynumic number(4) := 0;如果还不行,就把那张表,随便换成别的一张表,看看。
      

  4.   

    不行结果我把代码修改成:
    create or replace procedure pro_addsystemsettings
    (listnode  in Userconfig_table) 
    as
    begin
       select  count(*) 
       from 
       gis_userconfig;
    end 
    pro_addsystemsettings;在gis_userconfig;一行出现错误
    此表达式的类型声明不完整或格式不正确
    可能是表的原因我换系统表没出现类似错误
      

  5.   

    问题解决了,罪魁祸首就是timestamp这一栏的列名当时命名为timestamp,是数据库系统保留的关键字。导致写存储过程的时候一直报表定义的错误!谢谢大家的支持!