我有两个存储过程如下:
create stored procedure p1
as
select * from table1 where datediff(day, table1.[date], getdate())
create stored procedure p2
as
declare @t1 table(
ref varchar(20)
)
insert into @t1 select * from table1 where ref = 'some ref'
declare @t2 table(
fname varchar(20),
lname varchar(20),
email varchar(1000)
)
declare @len int = (select count(ref) from @t1)
while @len > 0
begin
declare @value varchar(20) = (select top 1 ref from @t1)
insert into @t2 select * from table2 where ref = …Run Code Online (Sandbox Code Playgroud) 是什么区别statement.executeQuery和statement.getResultSet()。我相信两者都会返回ResultSet一个 select 语句,但是当我们应该使用它们中的哪一个时,是否有任何特定的标准。
我的应用程序在一个平台上使用MySQL而在另一个平台上使用SQLite,因此存在差异,例如在使用查询时DELETE FROM USERS:
PreparedStatement.getResultSet()将返回null.PreparedStatement.getResultSet()将抛出java.sql.SQLException: no ResultSet available.这可能是也可能不是SQLite实现中的错误(我认为它应该返回null),但我必须以某种方式处理它.
我可以使用a try { ... } catch (SQLException e) { ... },如果是异常消息"no ResultSet available",只需手动返回null.尽管如此,这并不是一种正确的方法.
我可以提出一个if,它会检查正在使用的JDBC驱动程序并做出相应的反应,但同样,这并不是解决问题的好方法.
我真正想要的是一个像.hasResultSet()这样的方法返回boolean ORSELECT, UPDATE, INSERT从一个已经执行的语句中获取SQL命令(等)的方法.我在SQL API中找不到这两个.