时尚

ORA-00904: 标识符无效

作者:admin 来源:原创 时间:2020年07月12日 10:54:47浏览:

  场景:java.sql.SQLException: ORA-00904: "CHARINDEX" 标识符无效

  java.sql.SQLException: ORA-00904: "CHARINDEX": 标识符无效

  ?

  charindex--是 SQL Server函数

  Oracle--用instr

  场景:

  我建立啦一个函数 包含动态的sql 但运行时有问题 高手帮忙

  CREATE OR REPLACE function HRBEURS.get_values(zd varchar2,tablename varchar2)

  return varchar2

  as

  v_values varchar2(50);

  sql_statement varchar2(200);

  begin

  sql_statement :='select :zd from :tablename where rownum=1';

  execute immediate sql_statement into v_values using zd,tablename;

  return v_values;

  exception

  when NO_DATA_FOUND THEN

  raise_application_error(-20000,'没有信息');

  end;

  /

  运行的时候错误提示

  *

  ERROR 位于第 1 行:

  ORA-00903: 表名无效

  ORA-06512: 在"HRBEURS.GET_VALUES", line 8

  ORA-06512: 在line 1

  老说表明无效 怎么办

  函数的目的 随便查询一个表中的一个字段的值

  ------解决方案--------------------

  本地动态SQL的绑定变量一般是用在确实是变量(这里不太好描述)的子句中(如set 列=:val或where 列=:val)中。

  我测试的结果是:

  1)在select语句中select列和where子句中都可以用绑定变量且确实能避免重复解析,但from 的表用邦定变量不通过。

  2)在update语句中更新的列和表名都不能用邦定变量,只有值可以用邦定变量。

  场景:ORA-00900 无效Sql语句解决思路

  ORA-00900 无效Sql语句

  剛開始用Oracle 語句是 "updata into table set text = "+sql+ ",type ="+type+ " where id="+sqlid; 怎麽一執行就報我 "ORA-00900 无效Sql语句 "? 是什麽情況

  ------解决方案--------------------

  "updata table set text="+sql+ ",type="+type+ " where id="+sqlid;

(来源:原创   admin)  

1.bet9官网登录遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本网的原创文章,请转载时务必注明文章作者和"来源:bet9官网登录",不尊重原创的行为bet9官网登录或将追究责任;3.作者投稿可能会经bet9官网登录编辑修改或补充。

阅读延展