db.query()

阅读(4465) 标签: 数据源, sql, 查询, 序表,

描述:

在数据源中查询指定的SQL,返回查询结果所组成的序表。

语法:

db.query( sql {,args …})

 

db.query(A,sql{,args })

针对A执行sql,返回结果集合并的序表,args可以是A的表达式。支持选项@idx

备注:

在数据源db中查询指定的SQL,返回SQL的查询结果所组成的序表。

sqlFROM后是单表时,自动设置结果序表的键。

当数据源名称为空时,该函数支持使用简单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为网格参数,参数值为100arg2A1格中定义的参数,第三个参数直接传递参数值为“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)

ab分别为t1.dfx中的网格参数。

 

 

A

 

1

=connect("MyOdbc").query("call D:/t1(?,?)",2,3)

调用t1.dfx,并向其中传递参数值,a值为2b值为3,返回结果为8

MyOdbcesproc-ODBC数据源名称。

sql为简单SQL

 

A

 

1

=connect().query("select * from D:/cities.txt")

 数据源名称为空时,参数sql为简单SQL,查询cities.txt数据文件内容。

返回其他类型结果:

 

A

 

1

=demo.query("select NAME from  STUDENTS")

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

相关概念:

db.execute()

db.proc()

$(db)sql;…