将查询插入oracle数据库

时间:2012-01-21 09:02:03

标签: java sql database oracle

  

可能重复:
  How to handle a single quote in Oracle SQL

我的Senario: 我想在数据库中保存查询(而不是结果集)。 我使用Java作为前端; 我的表(Querytab)具有以下字段:

sno VARCHAR2(1024)
QUERY VARCHAR2(4000)

问题是当我插入具有条件的查询时 例如insert into querytab values('100','select * from querytab where sno ='100'');

第1行的错误: ORA-00933:SQL命令未正确结束

问题是:Queryvalue在找到 ' 时会被终止 怎么解决这个问题。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

要插入单引号,您需要转义它们。转义是通过简单地复制它们来完成的:

insert into querytab 
(sno, query)
values
('100','select * from querytab where sno = ''100'' ');

手册中对此进行了解释:

http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements003.htm#i42617

答案 1 :(得分:1)

使用PreparedStatement来转义字符串。

这样的事情:

sql="insert into querytab values (?,?)";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1,"100");
ps.setString(2,"select * from querytab where sno ='100'");
ps.executeUpdate();

答案 2 :(得分:0)

试试这个,

insert into querytab values('100','select * from querytab where sno =100');