对我来说:非常难的问题,请大家帮帮忙!!!

eastxiang 2005-03-29 12:13:33
Delphi 中如何解析 SQL(如SQL SERVER) 脚本!
意思是: 有一段SQL脚本,里面有insert ,select ,update ,create table,create procedure
等等语句,符合SQL语法标准的;
我现在需要将她一条语句一条语句解析处理;有办法吗?
--------------------
例: (sql脚本)
select * from table01
where col01 = getdate()

update table01 set ....

create procedure procname
as
....
---------------------------------------
解析出来是:
1. select * from table01
where col01 = getdate()

2. update table01 set ....

3. create procedure procname
as
....



...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lym_1978 2005-04-01
  • 打赏
  • 举报
回复
呵呵
SQL 事件探测器 可以很好的解决这个问题。
Heyongfeng 2005-03-31
  • 打赏
  • 举报
回复
主要看你的文本,如果是从SQL导出的,把GO去掉可以直接在控件中执行。
duanhai 2005-03-30
  • 打赏
  • 举报
回复
與我們在SQL查詢分析器中一樣,在語句的後面加一個GO,且是大寫的,這個問題就可以解決
helloqiner 2005-03-29
  • 打赏
  • 举报
回复
对,就判断insert ,select ,update ,create, delete 这些关键字的位置,然后截取前面的部分做为一条语句。然后循环处理
aiirii 2005-03-29
  • 打赏
  • 举报
回复
數據結構 中前幾章就會講到的

可能還更簡單, 因為, SQL 句子的首字符, 就只有簡單的這麼幾個
herman~~ 2005-03-29
  • 打赏
  • 举报
回复
一头雾水
帮顶
enzhiyiqiu 2005-03-29
  • 打赏
  • 举报
回复
循环读取后用pos函数,取关键字的位置看看
leeshine 2005-03-29
  • 打赏
  • 举报
回复
呵呵,直接去问问微软是怎么解决这个问题的!
其实你不用解析,直接把文本当成存储过程代码传给SQL Server去执行也是可以的!
eastxiang 2005-03-29
  • 打赏
  • 举报
回复
其中包含了复杂的子查询,还有可能会是SQL SERVER的独立的语句等等;
declare @i:integer
select @i
select * from table01
create procedure procname
as .....
if exists(.....)
eastxiang 2005-03-29
  • 打赏
  • 举报
回复
文本没有规范的格式,只是查询分析器能够解析的文本,都可能出现!
hellolongbin 2005-03-29
  • 打赏
  • 举报
回复
最好是把你的文本贴出来看看格式再让大家帮你出主意
hellolongbin 2005-03-29
  • 打赏
  • 举报
回复
你的sql语句中不包含子查询什么的吧?别把诸如
select * from table1 where field1 in (select filed1 from table2)
之类的也拆成俩
DDGG 2005-03-29
  • 打赏
  • 举报
回复
更简单:上述SQL脚本每段之间不是有个空行么?只要通过这个空行分割字符串就行了,哈哈。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧