虽然我的表有列id,但是在游标中id无效列

时间:2017-05-30 20:45:21

标签: plsql oracle10g oracle-sqldeveloper

我的表有一个已定义的列ID。 虽然相同的查询独立运行,但是当我尝试在游标中声明它时,它会显示无效的列。

declare 
  type PA_1 is record (PI number); 
  calc number; 
  row_container PA_1; 
begin 
  for row_container in 
  (
     select distict t1.pi , t2.id 
     from table1 t1, table2 t2 
     where t1.Pi=t2.pi
  ); 
  Loop 
    select calculation to calc 
    from table1 t1 
    where t1.pi=row_container.pi and t2.id=row_container.id;
  end loop; 
  commit; 
end; 

否则内部查询运行正常。请帮忙

1 个答案:

答案 0 :(得分:1)

多种语法错误:

  • 首先,您应删除row_container的声明。 for row_container in ()非常复杂(并且您的一列专栏声明甚至不会将您的查询与两列匹配)。
  • distict应为distinct
  • 然后在Loop关键字前删除分号。它不属于那里。
  • 然后select calculation to calc应为select calculation into calc
  • 在循环内部,您从table1(您再次调用t1)中选择,但您的where子句包含t2.id,而该查询中没有t2

然后:这个例程应该做什么?它在变量calc中选择一些值,但不使用它。所以一旦它运行,它就什么都不做。