本章介绍query()函数的多种用法。
执行DQL查询语句。
d.query(dql,…)
参数:
d |
DQL连接。 |
dql |
DQL查询语句。 |
返回值:
序表
示例:
|
A |
|
1 |
=dql("demo.glmd") |
创建DQL连接。 |
2 |
=A1.query("SELECT OrderID,ShipDate#Month,Amount FROM Orders") |
执行DQL查询语句。 |
描述:
在数据源中查询指定的SQL,返回查询结果所组成的序表。
db.query( sql {,args …}) |
|
db.query(A,sql{,args …}) |
针对A执行sql,返回结果集合并的序表,args可以是A的表达式。支持选项@idx。 |
备注:
在数据源db中查询指定的SQL,返回SQL的查询结果所组成的序表。
sql中FROM后是单表时,自动设置结果序表的键。
当数据源名称为空时,该函数支持使用简单SQL。
参数:
db |
数据库连接,其中包含esProc-JDBC数据源。 |
sql |
可以是sql查询,也可以是call dfx()调用语句; 参数为”call dfx()”时,表示通过esProc-ODBC数据源db调用集算器网格文件,文件格式为dfx,网格文件可使用相对路径或绝对路径,相对路径时相对于寻址路径,返回网格文件的结果集。 |
args |
传递给sql的参数;可以是参数值,也可以是定义过的参数名称,多个参数之间用逗号分隔。 |
A |
序列,对着A循环执行sql,一般是利用A计算出不同的args传给sql去执行。 |
选项:
@1( sql {,args …}) |
只返回符合条件的第一条记录, 返回成单值或序列。 |
@i |
结果集只有1列时返回成序列。 |
@d |
将numeric型数据转换成double型数据,而非decimal型数据。 |
@x |
结束时自动关闭数据库连接,仅限用connect连接的数据库连接。 |
@v |
返回纯序列/纯序表。 |
返回值:
示例:
sql查询语句:
|
A |
|
1 |
=demo.query("select * from SCORES") |
db参数为数据源名称,此时要求demo是连接成功的状态,查询SCORES表中的所有数据。 |
2 |
=connect("demo") |
|
3 |
=A2.query@x("select * from SCORES") |
connect连接方式,可以使用@x选项。 |
4 |
=A2.query("select * from STUDENTS") |
正常会出现报错:Data Source demo is shutdown or wrong setup.,提示数据源未启动,这是由于A3计算结束时自动关闭了数据库连接。 |
sql中有参数:
|
A |
|
1 |
>arg2="R&D" |
定义参数名为arg2,参数值为"R&D"。 |
2 |
=demo.query("select EID,NAME,DEPT,GENDER from employee where EID<? and DEPT=? and GENDER=?",arg1,arg2,"M") |
查询employee表中的内容,其中arg1为网格参数,参数值为100,arg2为A1格中定义的参数,第三个参数直接传递参数值为“M”。
|
根据序列A查询sql:
|
A |
|
1 |
[1,2,3,4] |
|
2 |
=demo.query(A1,"select EID,NAME from EMPLOYEE where EID=?",~*~) |
通过序列A1计算出参数值为[1,4,9,16],参数值传入SQL中返回计算结果:
|
sql中使用call splx()语法, t1.dfx如下:
|
A |
|
1 |
=power(a,b) |
a,b分别为t1.dfx中的网格参数。 |
|
A |
|
1 |
=connect("MyOdbc").query("call D:/t1(?,?)",2,3) |
调用t1.dfx,并向其中传递参数值,a值为2,b值为3,返回结果为8。 MyOdbc为esproc-ODBC数据源名称。 |
sql为简单SQL:
|
A |
|
1 |
=connect().query("select * from D:/cities.txt") |
数据源名称为空时,参数sql为简单SQL,查询cities.txt数据文件内容。 |
返回其他类型结果:
|
A |
|
1 |
从demo数据源中查询STUDENTS表的NAME字段,返回内容如下:
|
|
2 |
=demo.query@i("select NAME from STUDENTS") |
结果集只有一列时,使用@i选项,返回序列。
|
3 |
=demo.query@v("select * from STUDENTS") |
返回纯序表。 |
4 |
=demo.query@iv("select NAME from STUDENTS") |
返回纯序列。 |
5 |
=mysql.query@d("select * from ta") |
使用@d选项,numeric型数据将被转换成double:
|
6 |
=demo.query@1("select NAME from STUDENTS") |
返回单值:Emily。 |
相关概念: