conj()

阅读(4563) 标签: conj,

本章介绍conj()的多种用法。

A.conj(x)

描述:

计算序列成员的和列。

语法:

A.conj(x)

备注:

计算序列A中各个序列成员的和列。有参数x时,循环计算表达式x后再进行和列。

A.conj(x,…)等同于A.(x,…).conj()

选项:

@r

递归计算到所有成员都不再是序列为止。

@v

A的成员为纯序列/纯序表时返回纯序列。企业版适用。

参数:

A

序列,其成员为序列。

x

表达式,可省略。

返回值:

序列

示例:

A成员为序列:

 

A

 

1

=[[1,2,3],[4,5,6]].conj()

返回结果:[1,2,3,4,5,6]

2

=[[1,[2,3]],[2,5,6]].conj()

返回结果:[1,[2,3],2,5,6]

3

=[[1,2,3],[3],[7]].conj()

返回结果:[1,2,3,3,7]

4

=[[1,[2,3]],[2,5,6]].conj@r()

使用@r选项,递归计算到所有成员不再是序列为止,返回结果:[1,2,3,2,5,6]

5

=[[1,2,3],[4,5,6]]

 

6

=A5.conj(~**2)

返回结果:[2,4,6,8,10,12]

7

=A5.(~**2).conj()

返回结果同A5

A成员为序表/排列:

 

A

 

1

=demo.query("select  top 4 EID,NAME,GENDER from EMPLOYEE where GENDER = 'M' ")

2

=demo.query("select top 4 EID,NAME,GENDER  from EMPLOYEE where GENDER = 'F' ")

3

=[A1,A2].conj()

计算[A1,A2]序列的和列,返回结果:

4

=[A1,A2].conj(~.(NAME))

计算[A1,A2]序列中NAME和列,返回结果:

["Matthew","Ryan","Jacob","Daniel","Rebecca","Ashley","Rachel","Emily"]

5

=[A1,A2].(~.(NAME)).conj()

结果同A4

返回纯序列:

 

A

 

1

=[1,2,3].i()

返回纯序列。

2

=[4,5].i()

返回纯序列。

3

=[A1,A2].conj@v()

使用@v选项,返回纯序列。

4

=ifpure(A3)

返回true, 判断A3是否为纯序列。

 

ch.conj()

描述:

拆分管道中的记录并将拆分结果并集,将该计算附加到原管道。

语法:

ch.conj(x)

备注:

管道ch附加计算,ch中的记录根据计算表达式x把每条记录拆分为序列/排列,然后将拆分结果中的成员或记录并在一起,返回原管道ch

该函数属于附加计算动作

参数:

ch

管道。

x

返回排列(序表)的表达式。

返回值:

管道

示例:

 

A

 

1

=demo.cursor("select * from GYMNASTICSWOMEN")

返回游标。

GYMNASTICSWOMEN表内容如上图。

2

=channel()

创建管道。

3

=A2.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,

COUNTRY,"VAULT",VAULT,ID,NAME,COUNTRY, "UNEVENBARS",UNEVENBARS,

ID,NAME,COUNTRY,"BALANCEBEAM",BALANCEBEAM,ID,NAME,

COUNTRY,"FLOOR",FLOOR]))

管道A2附加计算,把管道中的字段VAULTUNEVENBARSBALANCEBEAMFLOOR做列转行计算,返回原管道。

3

=A2.fetch()

A2管道执行结果集函数,保留管道当前数据。

4

=A1.push(A2)

将游标A1中的数据推送到管道,此时数据不会立即被推送到管道。

5

=A1.fetch()

A1游标执行取数动作,此时数据才会被推送到管道,然后管道执行计算并记录结果。

6

=A2.result()

获取管道A2计算结果:

cs.conj()

描述:

拆分游标中的记录并将拆分结果并集,将该计算附加到原游标。

语法:

cs.conj(x)

备注:

游标cs附加计算,cs中的记录根据计算表达式x把每条记录拆分为序列/排列,然后将拆分结果中的成员或记录并在一起,返回原游标cs

该函数属于延迟计算函数。

参数:

cs

游标/多路游标。

x

返回排列(序表)的表达式。

返回值:

游标

示例:

 

A

 

1

=demo.cursor("select * from GYMNASTICSWOMEN")

返回游标,数据内容如下:

2

=A1.conj(create(ID,NAME,COUNTRY,SUBJECT,SCORES).record([ID,NAME,COUNTRY,"VAULT",

VAULT,ID,NAME,COUNTRY, "UNEVENBARS",UNEVENBARS,ID,NAME,COUNTRY,

"BALANCEBEAM",BALANCEBEAM,ID,NAME,COUNTRY,"FLOOR",FLOOR]))

A1游标附加计算,把游标中的字段VAULTUNEVENBARSBALANCEBEAMFLOOR做列转行计算,返回原游标A1

3

=A1.fetch()

读取游标A1执行A2计算后的数据(数据量较大时建议分批读取)

 

CS.conj()

描述:

纵向连接游标序列后返回多路游标。

语法:

CS.conj()

备注:

CS是游标组成的序列,针对其成员做纵向连接,结果返回多路游标,相当于合并游标中的数据。游标序列中各个游标的结构必须相同。

该函数属于延迟计算函数。

参数:

CS

游标组成的序列。

返回值:

多路游标

示例:

 

A

 

1

=connect("demo").cursor("SELECT  top 3 *  FROM scores where SUBJECT='English' ")

返回游标,数据内容如下:

2

=connect("demo").cursor("SELECT  top 3 *  FROM scores where SUBJECT='Math' ")

返回游标,数据内容如下:

3

=connect("demo").cursor("SELECT  top 3 *  FROM scores where SUBJECT='PE' ")

返回游标,数据内容如下:

4

=[A1,A2,A3]

返回游标组成的序列。

5

=A4.conj()

纵向连接游标序列,返回游标。

6

=A5.fetch()

读取A5游标中的数据(数据量较大时建议分批读取):

 

相关概念:

A.merge()

CS.merge()   connect()

描述:

创建数据源连接。

语法:

connect(dataSource)

 

connect(drv,url)

用驱动和url连接数据库,用户名和口令写进url中。

connect()

返回文件系统的数据库连接,用于SQL查询。

备注:

创建数据源连接,无参数时,返回文件系统的数据库连接。

选项:

@l

返回的字段名和表名为小写,缺省由数据库处理。

@e

出错时返回错误信息由代码自行处理,否则将中断。

@ncurs

连接的事务孤立级别,分别对应nonecommituncommitrepeatableserializable

参数:

dataSource

数据源名称。

drv

数据库驱动类。

url

数据库url

返回值:

数据源连接信息

示例:

 

A

 

1

=connect("demo")

连接demo数据源,本连接对数据库的任何操作,如果出错则中断

2

=connect@e("demo")

连接demo数据源,本连接做的任何操作,出错时返回错误信息由代码自行处理。

3

=connect@c("demo")

连接demo数据源,连接的事物孤立级别为commit

4

=connect("org.hsqldb.jdbcDriver","jdbc:hsqldb:hsql://127.0.0.1/demo?user=sa")

使用connect(drv,url)方式连接数据源,此处密码为空。

5

=connect("com.mysql.jdbc.Driver","jdbc:mysql://127.0.0.1:3306/mysqlwp?user=root&password=root")

使用connect(drv,url)方式连接mysq数据源。

6

=connect()

参数为空,连接文件系统。

7

=connect@l("demo")

连接demo数据源,返回的字段名和表名为小写。

8

=A7.query("select * from DEPT")

 

9

=connect("com.esproc.jdbc.InternalDriver","jdbc:esproc:local://")

连接esproc-JDBC数据源。

10

=connect("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:root/root@127.0.0.1:1521:orcl")

连接oracle数据源。orclSID

11

=connect("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:root/root@//127.0.0.1:1521/snA")

连接oracle数据源。snAservice_name

相关概念:

db.close()

db.error()

db.commit()

db.rollback()