名称:
图标:
功能:
- SQL语句方式处理库表记录复杂的查询
常用于多个数据库表/视图的SQL语句联表查询并返回想要的数据结果
使用方式:
SQL语句关联查询设计
输入:
<SQL Statement>:字符类型值的输入,单数,必须项;用于输入要执行的SQL语句
· 比如这个语句是两个表的关联查询:SELECT Products.Name, Suppliers.Name FROM Products, Suppliers WHERE Products.Suppliers_ID=Suppliers.Suppliers_ID
· 为了让查询语句更加灵活,可以用传入参数的语句来查询,参数通过添加输入元件再传参数值方式实现,可以添加不同类型的多个输入元件作为多个参数传入值
· 默认有<Value 1><Value 2>两个输入元件,我们可以将其改名为“Product”和“Supplier”作为参数输入项,这样我们查询语句可以改为:SELECT Products.Name, Suppliers.Name FROM Products, Suppliers WHERE Products.Suppliers_ID=Suppliers.Suppliers_ID AND Products.Name=${Product} AND Suppliers.Name=${Supplier},这样就可以依据数据库中查询到的表中数据进行关联处理并输出查询到的结果
· 如果不需要参数输入,可以将<Value 1><Value 2>两个输入元件删除
· 使用<Value 1><Value 2>等输入参数时,名称可以随意定义,可以自行添加更多参数,此时SQL语句中,参数不需要加单引号
· 不使用参数时,也可以将变量先传入模板生成字符串元件进行带参数的SQL语句生成,此时应有单引号,这是SQL语句的规范:
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号
· 可以使用联表 SQL Join语句来进行处理,参考下部示例中案例三,也可参考在线资料进行语句相关内容的更多了解
- <Number of Records>:数字类型值的输入,单数,非必须项;用来定义最多输出多少条记录,符合要求的记录数少于此输入数字时全部输出
- <Data Source>:字符类型值的输入,单数,非必须项;用来指定在哪个数据库中进行记录查询操作,用一个字符常量传入数据库名称,常量值是项目配置文件设定的某个数据库名称,无此输入元件则默认为对项目主数据库进行处理
<Auto Commit>:布尔类型值的输入,单数,非必须项;控制操作数据库处理是否为立即进行数据库信息变更处理的模式;查询处理一般无需此定义,因为不涉及记录变更;注意这与TERSUS开发时数据库处理默认操作模式不同;如果输入为Yes,则在生成新序列号时会立即进行数据库中值的变更处理:
· TERSUS默认的数据库执行模式是,在同一个Service服务器端处理(包括Secured Service)中,如果全部逻辑完成无异常,数据库才会执行相关操作,如果中间中断,或部分处理后报错/中断,则全部数据退回执行前状态,也就是默认成功完成全部逻辑处理才会更新数据库值输出:
<Results>:任意类型对象的输出,复数,必须项;查询结果输出元件
· 输出结果对象类型与查询语句中输出值相匹配,可能是元数据如文本字符型数据、数字类型对象
· 输出可以是一个数据库表记录元件或数据结构的组合对象
· 输出也可以是一个Map类型对象- <None>:空值输出,单数,非必须项;用于完成处理但没有任何结果时传出空值
- <Output Columns>:固定数据结构的输出,复数,非必须传值;输出<Results>的结果的字段名称和类型名称
· 输出结果是一固定格式的数据结构对象,名称为“Column Descriptor”(含两个固定名称“Name”和“Type”的文本类型/变量子对象),此对象可以选中<Output Columns>输出元件,右键单击元件并在弹出的菜单中选“Show in Respository Explorer”在项目目录中的元件模板中找到数据结构对象并拖放入开发区与<Output Columns>输出连线传值
· <Output Columns>输出的结果是将所有的字段名和对应的数据类型名称放入到“Column Descriptor”数据结构对象中(名称值传入Name和Type两个子元件),每个对象含一组字段的名称和类型信息
· 这个输出在<Results>输出为Map类型时使用 - 注意,<Results>和<None>是两个非此即彼的输出,即如果输出至少一条以上记录,则<None>没有空值输出;如果没有记录输出,<None>输出空值来标记没有记录
示例:
案例一:用SQL查询语句执行查询处理
任意一个项目的目录“Common/Templates/Database/Database Query/Database Test 8/Test Group By”中:
案例二:用参数动态生成查询语句进行查询
任意一个项目的目录“Common/Templates/Database/Database Query/Database Test 7/Select Expression”中:
案例三:免费成熟框架中菜单栏进行当前用户授权信息查询
免费成熟框架项目的目录“TERSUS/Desktop View/xitongye/CaiDanLan/YongHuQuanXian/YongHuQuanXian”中:
其中的SQL语句部分为:select Permission from Role_Permissions as a left join User_Roles as b on a.Role=b.Role left join Users as c on b.User_ID=c.User_ID where c.User_ID=${ID}
这个服务器端的逻辑块是将以下三个表进行关联获取当前系统登录用户账号(User_ID)对应的所有权限,这三个表为: