oracle语法验证规则

商者 发布于 2011/05/09 16:00
阅读 689
收藏 1

我们公司现在有个仿真项目,其中有一项是仿oralce语法验证规则,只验证语法的正确性而不执行真正的命令。还是举个例子说的明白:
        比如现在有个例子:delete aa from aa;
        这条语句语法上是不正确的,我不管数据库里到底有没有aa这张表,也不执行删除!
 我想问的是,oracle有没有这样的接口供我调用?让我能判断这条语句语法的正确性
       有的朋友告诉我,让我直接连数据库,捕获异常信息,可是我们公司的这个仿真项目前提是不让连库,纯页面写!
希望各位高手能帮个忙,小弟不胜感激啊!!!!!!!!!!!!!!!!!

加载中
0
ddatsh
ddatsh

你又发新帖啦

 

还是以前的老回答  ORACLE 应该不会提供的

花了几百几千W 去向ORACLE买,不知道会不会给你提供

我看见个针对SQL SERVE的

做语法检查时要能连得上SQLServer,然后程序如下:
Private Function CheckSQL(ByVal SQLs As String) As String
On Error GoTo errHandle
conTADO.Execute ("SET PARSEONLY ON " & SQLs)
CheckSQL = "语法检查通过。"
conTADO.Execute ("SET PARSEONLY OFF")
Exit Function
errHandle:
CheckSQL = Err.Description
conTADO.Execute ("SET PARSEONLY OFF")
End Function

其中conTADO是一个已连接好的ADO的Connection对象。
关键在于
SET PARSEONLY ON 和 SET PARSEONLY OFF,
执行了SET PARSEONLY ON 后,再执行的SQL语句,不会真的执行,只是预执行一下,有错误就会返回,完了以后再执行SET PARSEONLY OFF,数据库就会恢复原态。



这一种更好一点

USE pubs
GO
PRINT 'Valid query'
GO
-- SET NOEXEC to ON.
SET NOEXEC ON
GO

-- Inner join.
SELECT a.au_lname, a.au_fname, t.title
FROM authors a
INNER JOIN   titleauthor ta
   ON a.au_id = ta.au_id
INNER JOIN titles t
   ON ta.title_id = t.title_id

GO
-- SET NOEXEC to OFF.
SET NOEXEC OFF
GO
PRINT 'Invalid object name'
GO

0
鉴客
鉴客

没有这样的接口

0
商者
商者

应该有个Oracle语法验证规则 的jar,我可以用java去解析调用它,让他返回错误信息和提示信息。 估计得买,不知道需要多少钱可以买到?

有谁可以提供?

0
红薯
红薯

引用来自#4楼“商学子”的帖子

应该有个Oracle语法验证规则 的jar,我可以用java去解析调用它,让他返回错误信息和提示信息。 估计得买,不知道需要多少钱可以买到?

有谁可以提供?

没有的,因为SQL语句是送到数据库服务器后端去解析和执行的,并不是在jdbc驱动中完成。

0
ddatsh
ddatsh

哈哈 我公司边上就是ORACLE 的大楼

有空来问问?

0
商者
商者

你问问他们看有没有这方面的jar包?我们公司买,难道你在汉王科技?

0
ddatsh
ddatsh

我可不认识他们哟

我在上海的嘛

返回顶部
顶部