+ -
当前位置:首页 → 问答吧 → oracle存储过程怎么使用在存储过程中获取的表

oracle存储过程怎么使用在存储过程中获取的表

时间:2011-10-10

来源:互联网

在存储过程中,已经获取到表,保存在定义的变量table_name中,下接下来的操作中,我怎么样使用这个表作查询操作?
如:
  declare cursor mycur is select count(1) from 表名 where 条件
或这样:
  totalcount := select count(1) from 表名 where 条件

表名的地方应该怎么把上面的table_name加进去?

谢谢!!!!
 

作者: wang_zheguilai   发布时间: 2011-10-10

不太明白楼主的意思。

作者: lzd_83   发布时间: 2011-10-10

google一下 oracle 动态sql 就知道咋解决了

作者: horizonlyhw   发布时间: 2011-10-10

就是说如何使用我保存在变量table_name中的数据库表作查询操作。
查询语句怎么写。

作者: wang_zheguilai   发布时间: 2011-10-10

execute immediate 'select * from ' || table_name

作者: biandongfeng   发布时间: 2011-10-10

引用 4 楼 biandongfeng 的回复:
execute immediate 'select * from ' || table_name


这种方式编译是成功了,但是在使用执行命令:
exec procedurename;
的时候,执行不了,报:ORA_00900:invalid sql statement

作者: wang_zheguilai   发布时间: 2011-10-10

请问还有没有别的方法?还是我执行的语句写错了??????

作者: wang_zheguilai   发布时间: 2011-10-10

需要调试一下,确认 'select * from ' || table_name 是否有效的sql statement.
也就是要看看table_name里面是不是表名字.

作者: notebook800   发布时间: 2011-10-10

或者你先改成这样,看看是不是不抱错了.execute immediate 'select * from dual'

如果不抱错了,那么很可能是table_name 的值有错误!

作者: notebook800   发布时间: 2011-10-10

引用 8 楼 notebook800 的回复:
或者你先改成这样,看看是不是不抱错了.execute immediate 'select * from dual'

如果不抱错了,那么很可能是table_name 的值有错误!


我就只执行你上面提到的一句,但还是报同样的错,存储过程在pl/sql中编译之后,还要做什么操作啊?

作者: wang_zheguilai   发布时间: 2011-10-10