Bonjour
je cherche un moyen de retirer d'une chaine toute requete sql y figurant. et bien sur sans passer par un regex et en lotus script.
le probleme n'est pas de détecter un début de requete, mais ça fin !
Function SQLRemoveRequest(Chaine As String) As String
Dim i As Integer
Dim j As Integer
SQLRemoveRequest = Chaine
If Instr(Ucase(SQLRemoveRequest),"CREATE DATABASE") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE DATABASE","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"COMMIT") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"COMMIT","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"ROLLBACK") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"ROLLBACK","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"CREATE INDEX") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE INDEX","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"TRUNCATE TABLE") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"TRUNCATE TABLE","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"ALTER COLUMN") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"ALTER COLUMN","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"DROP COLUMN") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"DROP COLUMN","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"DROP TABLE") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"DROP TABLE","",,,1)
End If
If Instr(Ucase(SQLRemoveRequest),"MODIFY") > 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"MODIFY","",,,1)
End If
While Instr(Ucase(SQLRemoveRequest),"SELECT") > 0
i = Instr(Ucase(SQLRemoveRequest),"SELECT")
j = Instr(Ucase(SQLRemoveRequest),"FROM")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"SELECT","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+4))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"CREATE TABLE") > 0
i = Instr(Ucase(SQLRemoveRequest),"CREATE TABLE")
j = Instr(Ucase(SQLRemoveRequest),")")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE TABLE","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"ALTER TABLE") > 0
i = Instr(Ucase(SQLRemoveRequest),"ALTER TABLE")
j = Instr(Ucase(SQLRemoveRequest),"ADD")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"ALTER TABLE","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+3))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"CUSTOMER") > 0
i = Instr(Ucase(SQLRemoveRequest),"CUSTOMER")
j = Instr(Ucase(SQLRemoveRequest),")")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"CUSTOMER","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"CREATE VIEW") > 0
i = Instr(Ucase(SQLRemoveRequest),"CREATE VIEW")
j = Instr(Ucase(SQLRemoveRequest),"FROM")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE VIEW","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+4))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"INSERT INTO") > 0
i = Instr(Ucase(SQLRemoveRequest),"INSERT INTO")
j = Instr(Ucase(SQLRemoveRequest),"VALUES")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"INSERT INTO","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"UPDATE") > 0
i = Instr(Ucase(SQLRemoveRequest),"UPDATE")
j = Instr(Ucase(SQLRemoveRequest),"WHERE")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"UPDATE","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"DELETE FROM") > 0
i = Instr(Ucase(SQLRemoveRequest),"DELETE FROM")
j = Instr(Ucase(SQLRemoveRequest),"WHERE")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"DELETE FROM","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"RENAME TABLE") > 0
i = Instr(Ucase(SQLRemoveRequest),"RENAME TABLE")
j = Instr(Ucase(SQLRemoveRequest),"TO")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"RENAME TABLE","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+2))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"COMMENT") > 0
i = Instr(Ucase(SQLRemoveRequest),"COMMENT")
j = Instr(Ucase(SQLRemoveRequest),"IS")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"COMMENT","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+2))
End If
Wend
While Instr(Ucase(SQLRemoveRequest),"GRANT") > 0
i = Instr(Ucase(SQLRemoveRequest),"GRANT")
j = Instr(Ucase(SQLRemoveRequest),"IS")
If j = 0 Then
SQLRemoveRequest = Replace(SQLRemoveRequest,"GRANT","",,,1)
Else
SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
End If
Wend
End Function