Xbasic

SQL::Query::Parse Function

Syntax

Result_Flag as L = Parse([SQLStatement as C])

Arguments

Result_Flag

TRUE (.T.) if the operation was successful; otherwise FALSE (.F.).

SQL::Query

A SQL::Query object created with a DIM statement.

SQLStatement

Optional. A Portable SQL statement.

Description

Parse the SQLStatement passed (or the value previously set into the SQLStatement property).

Discussion

The Parse()parses the passed SQL_Statement (or the value previously set into the SQL::Query.SQLStatement property).

Example

dim conn as SQL::Connection
dim connString as C
dim qry as SQL::Query
connString = "{A5API='Access', FileName='c:\program files\a5v7\mdbfiles\alphasports.mdb'}"
? conn.open(connString)
= .T.
? qry.parse("Select * from Customers")
= .T.

This script shows the difference between the .SelectTableReferences and .TableReferences properties of the SQL::Query object.

dim q as SQL::query
? q.parse("select item from table1 t1 join table2 t2 on t1.a = t2.a join table3 t3 on t2.a = t3.a and t3.x in (select z from table4 t4 ) where x in (select y from z)")
= .T.
? q.selecttablereferences.Count
= 3
? q.selecttablereferences1
= Alias = "t1"
+Join.
Name = "table1"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.selecttablereferences2
= Alias = "t2"
+Join.
Name = "table2"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.selecttablereferences3
= Alias = "t3"
+Join.
Name = "table3"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences.Count
= 5
? q.tablereferences1
= Alias = "t1"
+Join.
Name = "table1"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences2
= Alias = "t2"
+Join.
Name = "table2"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences3
= Alias = "t3"
+Join.
Name = "table3"
Owner = ""
TokenTypeName = "SelectTableReference"
?q.tablereferences4
= Alias = "t4"
+Join.
Name = "table4"
Owner = ""
TokenTypeName = "SelectTableReference"
? q.tablereferences5
= Alias = ""
+Join.
Name = "z"
Owner = ""
TokenTypeName = "SelectTableReference"

Do the same process on the nested subselect.

SubSelect = q.where.operand2
? subselect.selecttablereferences.Count
= 1
? subselect.selecttablereferences1
= Alias = ""
+Join.
Name = "z"
Owner = ""
TokenTypeName = "SelectTableReference"
? subselect.tablereferences.Count
= 1
? subselect.tablereferences1
= Alias = ""
+Join.
Name = "z"
Owner = ""
TokenTypeName = "SelectTableReference"

See Also