NoahWeb
在线搜索
NoahWeb.net | 开发者交流中心 | 支持 | 文档 | 反馈缺陷 

变量前缀关键词 _SQL

  变量前缀关键词“_SQL”用来访问一个查询结果集内的值。此查询结果集必须已经被装载过。否则将不能返回所期望的内容。使用“_SQL”前缀关键词类型的变量时候,描述必须使用下列格式书写变量名:

"_SQL"+符号"."+所要获得的数据查询所在名称空间名+符号"."+所要获得的数据查询的名称+符号"."+结果集行号+符号"."+返回的字段名

例如:
示范变量 说明

[_SQL._this.master_SQL_loginfind.0.id]

表示访问当前名称空间下已装载查询结果集的“master_SQL_loginfind”查询第一行的字段"id"
[_SQL.manager.master_SQL_loginfind.0.id] 表示访问“manager”名称空间下已装载查询结果集的“master_SQL_loginfind”查询第一行的字段"id"
[_SQL.manager.master_SQL_loginfind.9.id] 表示访问“manager”名称空间下已装载查询结果集的“master_SQL_loginfind”查询的,第九行的字段"id"

 

  当需要访问所有返回的结果集行时候,可以使用逻辑层Loop的循环或表现层NoahLoop循环来循环所有的结果集,而在循环体内部使用此变量关键词所表示变量的时候就可以使用符号“*”代替“结果集行号”。书写格式如下所示范:

"_SQL"+符号"."+所要获得的数据查询所在名称空间名+符号"."+所要获得的数据查询的名称+符号"."+符号"*"+符号"."+返回的字段名

例如:
示范变量 说明

[_SQL._this.master_SQL_loginfind.*.id]

表示访问当前名称空间下已装载查询结果集的“master_SQL_loginfind”查询,当前循环指针所在行的字段"id"
[_SQL.manager.master_SQL_loginfind.*.id] 表示访问“manager”名称空间下已装载查询结果集的“master_SQL_loginfind”查询的,当前循环指针所在行的字段"id"

另外还可以使用结果集行号偏移的计算来满足一些特殊应用的显示。可以在“*”前后使用简单数学计算(不能使用变量)。如下:

示范变量 说明

[_SQL._this.master_SQL_loginfind.*+1.id]

表示访问当前名称空间下已装载查询结果集的“master_SQL_loginfind”查询,当前循环指针所在行+1的字段"id"
[_SQL.manager.master_SQL_loginfind.*-1.id] 表示访问“manager”名称空间下已装载查询结果集的“master_SQL_loginfind”查询的,当前循环指针所在行-1的字段"id"

 

  注:当在循环中使用时,可以使用变量前缀关键词“_LOOP”省略书写的内容。详细请查阅“变量前缀关键词 _LOOP

 

逻辑层示例

<Action name="manager.login" NextAction="">

<!-- 装载“master_SQL_loginfind”数据库查询,并且传递两个局部变量进去,假设此数据库查询能返回两个字段:"id"和"name" -->

<SQLLINK Id="master_SQL_loginfind">

<Var Value="[_root.myname]" />

<Var Value="[_root.mypass]" />

</SQLLINK>

<!-- 检测查询结果集,判断返回的第一行记录的"id"字段的值是否大于0 -->

<If EX="[_SQL._this.master_SQL_loginfind.0.id]&gt;0" >

<!-- 将查询结果集第一行记录内"name"字段的值设置给服务器会话SESSION变量"myloginname" -->

<SetVar Name="_SESSION.myloginname" Value="[_SQL._this.master_SQL_loginfind.0.name]" />

<!-- 将查询结果集第一行记录内"id"字段的值设置给服务器会话SESSION变量"myloginid" -->

<SetVar Name="_SESSION.myloginid" Value="[_SQL._this.master_SQL_loginfind.0.id]" />

</If>

</Action>

 

示例说明

  上述示例定义了一个在manager.aspx文件中执行的"login"的动作。动作执行时通过传递两个值装载预定义好的当前名称空间下数据库查询“master_SQL_loginfind”,然后判断查询返回的结果集的第一行的“id”值是否大于0,如果大于0则将返回的结果集合内的第一行的字段“id”和字段“name”分别设置给服务器会话SESSION变量“myloginname”和服务器会话SESSION变量“myloginid”。以方便在其他动作中调用。


示例

<table>

<!-- NoahLoopStart SQLLinkId="noah_master_class_column_S_findoneid" AutoMode="True" AutoReset="True" NewRunMode="True" Value="[_root.pointid]" -->

<tr>

<td><font color=red><!-- NoahValue ValueName="[_SQL._this.noah_master_class_column_S_findoneid.*.name]" --></font></td>

</tr>

<!-- NoahLoopEnd -->

</table>

 

示例说明

  上述示例表示对数据库操作noah_master_class_column_S_findoneid的返回结果将每一行的字段“name”的值以表格的方式循环输出在页面。

  注:当在循环中使用时,可以使用变量前缀关键词“_LOOP”省略书写的内容。详细请查阅“变量前缀关键词 _LOOP

 

 

 

查看NoahWeb在线手册

Copyright © 2001-2004 The NoahWeb Corporation
All rights reserved.