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当参数传入即可。
分享到:
相关推荐
JDBC允许Java开发者通过编写Java代码来执行SQL语句,实现对数据库的操作,如查询、插入、更新和删除数据。 JDBC的主要优势在于其跨平台性和数据库无关性。与ODBC(Open Database Connectivity)不同,ODBC是一个...
在深入探讨如何使用Java通过JDBC执行存储过程之前,我们首先需要理解几个核心概念:JDBC(Java Database Connectivity)、存储过程以及它们在Java中的交互方式。 ### JDBC:Java与数据库的桥梁 JDBC是一种用于执行...
在Oracle数据库中,存储过程是一组预编译的SQL语句和PL/SQL块,可以在数据库中存储并重复使用,提高代码的复用性和执行效率。 连接Oracle数据库通常涉及以下步骤: 1. 导入JDBC驱动:在Java项目中,我们需要添加...
首先,**JDBC创建触发器** 是一种数据库级别的事件响应机制,允许在特定数据库事件(如插入、更新或删除记录)发生时自动执行预定义的SQL代码。通过JDBC,我们可以编写Java程序来动态生成并执行创建触发器的SQL语句...
**存储过程(Stored Procedure)**:是一种预编译的SQL代码,可以被多次调用并在服务器上执行,提高了SQL语句的执行效率和重用性。它可以在数据库中定义并保存,之后可以在应用程序中通过简单的调用来执行复杂的逻辑...
- 创建Statement或PreparedStatement对象,用于执行SQL语句 - 执行SQL查询或操作 - 处理结果集,如遍历ResultSet - 关闭所有资源,包括ResultSet、Statement和Connection 6. **jar包的使用**:在Java项目中,将...
此外,JDBC 6.0版本可能引入了一些新特性,例如增强的性能优化、更好的错误处理机制、支持更多的数据库特性(如XML类型处理、存储过程的调用等)以及对Java 8特性的兼容。开发者在实际应用中应参考官方文档,了解...
此外,SQL JDBC驱动还提供了高级功能,如支持存储过程、游标、批处理、JNDI查找、连接池等。同时,微软的驱动还具有良好的错误处理机制和兼容性,能够处理不同版本的SQL Server。 总之,"sqljdbc_3.0,4.0"是Java...
本压缩包文件“数据库sql server2005和2000的驱动包-sql-jdbc”提供了适用于SQL Server 2000和2005的JDBC驱动程序,这对于使用Java开发与SQL Server数据库连接的应用程序至关重要。 首先,让我们深入了解SQL Server...
对于SQL Server特定的功能,如T-SQL存储过程,JDBC Driver 3.0也提供了调用接口。开发者可以通过CallableStatement对象来执行存储过程,并获取其返回的结果。 在安全性方面,JDBC Driver 3.0支持SSL加密,保证了...
sqljdbc42.jar还支持高级特性,如批量更新、存储过程调用、流处理、以及SQL Server特有的功能如XML列、全文搜索等。同时,它还包含了对SSL加密连接的支持,以确保数据传输的安全性。 值得注意的是,为了保持应用的...
- 使用`Statement`对象执行SQL命令创建存储过程。 - 创建一个名为`INSERT_NAME_EMAIL`的存储过程,该存储过程接受两个参数`@NAME`和`@Email`,并将它们插入到`myBook`表中。 - 示例中的存储过程创建语句如下: `...
Oracle存储过程是预编译的SQL语句集合,可以包含SQL查询、控制流语句以及PL/SQL块,提供了一种封装业务逻辑、提高性能和安全性的方法。 **1. JDBC基础知识** JDBC的核心是一组接口和类,它们位于java.sql包中。...
- 要使用这些驱动,开发者首先需要在项目中添加对应的jar文件,然后通过`Class.forName()`方法加载驱动,接着创建数据库连接,执行SQL语句,最后关闭连接。 - JDBC API的核心类有`java.sql.DriverManager`、`java....
它提供了增强的性能和新的功能,例如支持批量执行SQL语句和改进的错误处理。 3. SQLJDBC 4.1:在这个版本中,微软添加了对Java SE 8的支持,同时改进了对大型对象(如BLOB和CLOB)的处理,增强了对Unicode字符集的...
Java应用程序通过加载数据库驱动(如sqljdbc.jar),建立到数据库的连接,执行SQL语句,并获取结果。 SQL Server 2005 JDBC驱动主要有两个版本:SQL JDBC 3.0和4.0,它们都是兼容Java SE 6及更高版本的。这个压缩包...
SQL Server JDBC驱动还支持一些高级功能,如批处理、存储过程调用、游标、预编译的`PreparedStatement`、JDBC连接池等。这些特性可以帮助优化性能并简化代码。 总之,`mssql-jdbc-6.4.0.jre8.jar`是Java连接SQL ...
在数据库管理中,Java应用程序经常需要与数据库进行交互,执行SQL语句以及调用存储过程。JDBC(Java Database Connectivity)是Java平台中用于访问数据库的标准API,它提供了丰富的功能来实现这一目标。本篇文章将...
存储过程是一组预先编译好的SQL语句集合,它可以包含控制流语句、输入/输出参数,甚至可以有返回值。调用存储过程可以提高应用性能,减少网络通信,同时也可以提高代码的安全性和可维护性。 在Java中,JDBC提供了...
sqljdbc41.jar驱动负责处理SQL语句的编译、执行、结果集的处理等工作,并将Java数据类型转换为SQLServer可识别的数据类型。 四、使用sqljdbc41.jar连接SQLServer 使用sqljdbc41.jar连接SQLServer的步骤大致如下: ...