`
cleaneyes
  • 浏览: 336474 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDBC执行创建存储过程的语句,出现SQL-92错误

阅读更多

JDBC执行创建存储过程的语句,出现SQL-92错误。

在网上查询一下,有人说特殊字符' \n会导致这种错误,排除这些原因后,仍找不到原因。

发现数据库对存储过程里的SQL语法并不会做完全的验证,例如把select写成sel也不会报错。而这个存储过程拿到PL/SQL里去运行,可以创建。

估计是存储过程里用到的特定关键词被JDBC分析出不合法。

最后将存储过程DDL存储在文件里,使用读一行运行一次的方法,找到了发生错误的地方为被注释掉的代码。这段代码用到了C的结构体语法。

 

既然JDBC执行SQL里,进行语法验证时,不能忽略注释里的内容(不知道是否可以设置)。那只好采用,在数据库里创建一个存储过程,专门用来执行SQL语句。

create or replace executeSql(vSqlIn varchar2)
 AUTHID CURRENT_USER
is 
 begin
  execute immediate vSqlIn;
 end executeSql;
 

注意AUTHID CURRENT_USER用于给当前用户授权,否则执行对数据库结构的修改语句会报错:ORA-01031:insufficient privileges

 

在Java代码中用JDBC调用executeSql这个存储过程,把要创建的存储过程DDL当参数传入即可。

 

 

分享到:
评论

相关推荐

    Java调用SQL Server的存储过程详解

     使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: {call procedure-name}  作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中...

    JDBC 3.0数据库开发与设计

    4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    JDBC编程代码示例

    基于MysqlJDBC编程代码示例,包括配置文件读取,连接对象的创建,查询,增加,修改,元数据的使用方法,图片数据数据库存储读取,存储过程的SQL创建语句和java使用存储过程进行增删改查的调用代码,还有可以更新结果...

    PL/SQL 基础.doc

    PL/SQL 基础,一个不错的 PL/SQL 参考手册。内容预览: ---- 第一章 PL/SQL 简介 ---- 1. Oracle应用编辑方法概览 1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和...

    JAVA+SQL电子通讯录带系统托盘

    该电子通讯录带有系统托盘,可以将其最小化到系统托盘中。它是使用Java编写的桌面应用程序,旨在帮助用户管理他们的联系人列表。...SQL语句:用于执行各种数据库操作,如创建表、插入数据、查询数据

    mybatis的具体介绍.doc

    MyBatis是一个优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建Statement等繁杂的过程。MyBatis的主要特点和功能如下: 简单易用...

    数据库课程设计--图书管理系统.doc

    分析关系模式中的依赖关系,对关系模式规范化处理 4、完成系统物理结构设计 为每个关系分配存储长度,建立数据库的索引和视图,定义关系中的主码和外码,写 出关系创建和查询的SQL语句。 5、编码 选择你自己熟悉的...

    Mybatis框架基础

    在原生的Java技术中,需要使用JDBC实现对数据库中的数据访问,执行过程繁琐且相对固定,使用框架可以有效的提高开发效率!此文件包含Mybatis的配置流程! MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 ...

    Java版水果管理系统源码-jdbc:JDBC教程

    创建SQL或MySQL语句 执行SQL或MySQL的查询数据库 查看和修改结果记录 从根本上说,JDBC是一种规范,它提供的接口,一套完整的,可移植的访问底层数据库的程序。可以用Java来写不同类型的可执行文件,如: Java应用...

    基于swing和mysql的JDBC系统

    在该课程管理系统中,JDBC用于与MySQL数据库进行通信,包括建立连接、执行SQL语句、获取查询结果等。 数据库设计:数据库设计是系统开发中至关重要的一部分,它涉及到数据表的结构设计、关系建立以及数据完整性等...

    JSP-Servlets-SQL-ConnectionPool:使用 Java EE servelets 和 jsp(JSTL 和 EL)的电子邮件列表动态 Web 应用程序

    实现 Java EE 的电子邮件列表 Web 应用程序#####截图: 从左到右:添加新用户、成功屏幕、错误验证(重复邮件)连接池打开与 DB 的连接非常耗时,因此创建连接对象集合并将它们存储在另一个称为 DBCP 的对象中是常见...

    Java数据库编程宝典2

    13.2.1 创建存储过程 13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理...

    Java数据库编程宝典4

    13.2.1 创建存储过程 13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理...

    Java数据库编程宝典1

    13.2.1 创建存储过程 13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理...

    Java数据库编程宝典3

    13.2.1 创建存储过程 13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理...

    SQL+语法大全中文版

    SQL基础 本章内容 SQL介绍 使用 SELECT 语句从表中取数据 创建新表 字段属性 向表中添加数据 删除和修改表 为了建立交互站点,你需要使用数据库来存储来自访问者的信息。例如,你要建立一个 职业介绍服务的...

Global site tag (gtag.js) - Google Analytics