I am working with Dyalog APL and having trouble with getting the column names of a table resulted from an SQL query. More precisely, I am working with the workspaces (WS)
LOADDATA provided by Dyalog. Although the functions
SQA.Do from the
sqapl WS, respectively, make it possible to import a table resulting from an SQL query (e.g. a join of some tables), they do not return the column names.
Let's say we are in the following setting:
We have the following query that combines some tables
qry←'select COL_1, COL_2, C.* ' qry,←'from TABLE1 A, TABLE2 B, TABLE3 C ' qry,←'where C.COL_3 = B.COL_3 ' qry,←'and A.COL_4 = B.COL_4'
and want to get the resulting table together with the column names. We can call the functions
SQA.Do as follows:
⍝ With WS LOADDATA tbl1←LoadSQL ('MySQL' 'psw' 'userID')qry ⍝ tbl1 is a table without column names ⍝ With WS sqapl SQA.Init '' ⍝ Initiate SQA.Connect 'C1' 'MySQL' 'psw' 'userID' ⍝ Connect to a service tbl2←⊃⊃(SQA.Do 'C1' qry) ⍝ Keep only resulting table (3rd element) ⍝ again without column names
Note that the WS
sqapl offers the function
SQA.Columns which I can use as follows
(2⊃SQA.Columns 'C1' 'MY_TABLE')[;4]
This works fine provided the table MY_TABLE exists already, but I cannot make it work for a table that I get from a query as the one above. Is this possible?
What you're after is
SQA.Describe. See the documentation.