永发信息网

Oracle pl/sql编程的execute immediate问题

答案:1  悬赏:80  手机版
解决时间 2021-03-15 15:25
  • 提问者网友:锁深秋
  • 2021-03-15 10:41
tableName in varchar2;
v_sql varchar(1000);
--1,失败
v_sql:='select count(*) from'||tableName;
execute immediate v_sql into myRows; --找不到关键字FROM
--java运行时会提示:找不到from关键字;

--2,直接把表名book放进去就可以成功
v_sql:='select count(*) from book';
execute immediate v_sql into myRows;

是在java中调用的,1失败,2能成功。
求解。

tableName in varchar2;

tableName 已经在Java代码中传递进来了
cs = conn.prepareCall("{call pages_pro(?,?,?,?,?,?)}");
cs.setString(1,"book");
cs.setInt(2, 5);
cs.setInt(3, 1);
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
最佳答案
  • 五星知识达人网友:撞了怀
  • 2021-03-15 12:00
呵呵,经鉴定,1失败的原因是from 后面没有空格,你就'||拼接了表名最后执行的sql就是
'select count(*) frombook',所以会报找不到from关键字。欢迎追问。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯