<< 点击显示目录 >> 主页 mappServices帮助手册 > mapp Database: 连接数据库 > 配置 > MpDatabaseCore配置 > 查询类型 |
mapp Services V5.16
SELECT类型的查询可以使用小组件"数据库"来执行和显示 。更多信息,见"SELECT "一节。
•显示高级参数
Name |
||||||||||||
Database |
||||||||||||
Queries |
||||||||||||
Query: {/Name} |
||||||||||||
Name |
||||||||||||
Type |
||||||||||||
SELECT |
||||||||||||
SELECT |
||||||||||||
Destination |
||||||||||||
Columns |
||||||||||||
Process variable |
||||||||||||
{/Column} |
||||||||||||
Column |
||||||||||||
Process variable |
||||||||||||
FROM |
||||||||||||
WHERE |
||||||||||||
Connect |
||||||||||||
#1-N |
||||||||||||
Column |
||||||||||||
Operator |
||||||||||||
Compare To |
||||||||||||
Value |
||||||||||||
PV |
||||||||||||
ORDER BY |
||||||||||||
{/Column} ({/Order}) |
||||||||||||
Column |
||||||||||||
Order |
||||||||||||
INSERT |
||||||||||||
INTO |
||||||||||||
Columns |
||||||||||||
Process variable |
||||||||||||
{/Column} |
||||||||||||
Column |
||||||||||||
Process variable |
||||||||||||
UPDATE |
||||||||||||
Table Name |
||||||||||||
Columns |
||||||||||||
Process variable |
||||||||||||
{/Column} |
||||||||||||
Column |
||||||||||||
Process variable |
||||||||||||
WHERE |
||||||||||||
Connect |
||||||||||||
#1-N |
||||||||||||
Column |
||||||||||||
Operator |
||||||||||||
Compare To |
||||||||||||
Value |
||||||||||||
PV |
||||||||||||
CREATE |
||||||||||||
Table Name |
||||||||||||
Columns |
||||||||||||
Process variable |
||||||||||||
{/Column} |
||||||||||||
Column |
||||||||||||
Data type |
||||||||||||
DELETE |
||||||||||||
Table Name |
||||||||||||
WHERE |
||||||||||||
Connect |
||||||||||||
#1-N |
||||||||||||
Column |
||||||||||||
Operator |
||||||||||||
Compare To |
||||||||||||
Value |
||||||||||||
PV |
||||||||||||
CUSTOM |
||||||||||||
Query |
||||||||||||
Columns |
||||||||||||
Process variable |
||||||||||||
{/Column} |
||||||||||||
Column |
||||||||||||
Process variable |
关于不同查询类型的例子,见这里。
不同查询类型中使用的变量可以用两种不同的方式来指定。
自动
选项 "自动 "取决于 "自动映射 "下的设置。
•Strict。使用 "自动"和"严格",变量自动连接到表中的列。必须指定一个变量,其结构和变量名称与数据库表中的完全一致。下图中的表 "产品 "有 "id"、"name "和 "quality "等列。Automation Studio创建一个变量,如"SetData",其类型为 "Product_Type"。
如果变量名称与列名不匹配,或者指定的变量太少,则 会在功能块MpDatabaseQuery中触发错误 "查询错误"。错误 "不正确的PV条目 " 也会显示在Logger中。
•Flexible: 在 "自动 "和 "灵活 "的情况下,结构中变量的顺序可以变化。只有变量的名称必须与表中的列名相匹配。如果列("SA")和变量("VA")的数量不匹配,或者没有涵盖所有的列,则行为取决于使用的数据库系统和查询类型。
映射示例 |
SELECT |
INSERT INTO |
UPDATE |
VA和SA是相同的。 列名被覆盖。 变量名和列名的顺序相同 |
|||
VA和SA是不同的。 列名被覆盖。 变量名和列名的顺序相同 |
|||
VA和SA是不同的。 列名不包括在内。 变量名和列名的顺序相同 |
|||
VA和SA是相同的。 列名被覆盖。 变量名和列名的顺序不一致 |
|||
VA和SA是不同的。 列名被覆盖。 变量名和列名的顺序不一致 |
|||
VA和SA是不同的。 列名不包括在内。 变量名和列名的顺序不一致 |
•:查询可以被执行。
• 。查询不能被执行 触发了一个错误。更多信息,请参见常见问题中的 "命令行界面的信息" 。
• :行为取决于所用数据库的设置。这可以在各个数据库的文档中找到。由于不是所有的列名都被覆盖,所以要么插入数据库中定义的默认值,要么就会触发一个错误。更多信息,请参见 常见问题中的 "命令行界面的信息" 。
单列
在"单列"下,需要的列被单独指定。所需的列名在"列"下定义。必须指定一个PV,以便对信息进行存储、删除或更新等。PV的名称和数据库中的列名不一定要一致!
指定PV
如果指定一个具有简单数据类型的变量,则按如下方式进行。"::任务名:PV名"
以下SQL、MSSQL或PostgreSQL的数据类型应使用IEC的数据类型。
IEC数据类型 |
MySQL/MariaDB数据类型 |
MSSQL数据类型 |
PostgreSQL数据类型 |
BOOL |
TINYINT(1) |
BIT |
BOOL |
SINT |
TINYINT(4) |
TINYINT |
SMALLINT |
INT |
SMALLINT(6) |
SMALLINT |
INTEGER |
DINT |
INT(11) |
INT, BIGINT |
BIGINT |
USINT |
TINYINT(3) (unsigned) |
TINYINT |
SMALLINT |
UINT |
SMALLINT(5) (unsigned) |
SMALLINT |
INTEGER |
UDINT |
INT(10) (unsigned) |
INT, BIGINT |
BIGINT |
STRING |
VARCHAR(81) |
VARCHAR |
CHARACTER VARYING, CHARACTER |
WSTRING |
VARCHAR |
NVARCHAR |
CHARACTER VARYING |
TIME |
TIME |
TIME |
TIME WITHOUT TIME ZONE |
LREAL |
DOUBLE |
FLOAT, BIGINT |
DOUBLE PRECISION, NUMERIC |
REAL |
FLOAT |
FLOAT |
REAL |
DATE |
DATE |
DATE |
DATE |
DATE_AND_TIME |
DATETIME |
DATETIME2 |
TIMESTAMP WITHOUT TIMEZONE |
DATETIME(6) |
DATETIME |
TIMESTAMP WITHOUT TIMEZONE |
当使用数据类型WSTRING时,应遵守一般条件一节中解释的要点
负的TIME值不能在MS SQL和PostgreSQL中使用!
MSSQL数据类型BIGINT是一个8字节的数据类型。这不能由Automation Studio自动处理。必须进行LREAL、DINT或UDINT的转换。这可以在MpDatabaseCore配置中的常规设置("数据库设置")中完成 。
指定数组PV
如果指定了一个数组PV,则按如下方式进行。"::任务名:MyArrayPV[]"
大括号[]必须由用户添加。
指定PV片段
在查询中,也可以以片段的形式指定PV。这在与"自定义"查询相结合时尤为重要。它们在配置中使用"{&pv[任务名:PV名]}"指定。该片段必须始终在大括号("{}")中指定。&pv "代表一个过程变量的值。实际的PV在方括号中表示("[]")。
关于如何在查询中指定变量的例子,见查询例子一节 。
"SELECT "可以用来将信息从一个表/列复制到一个PV。需要查询信息的表在"FROM"中定义。信息所来自的列在"Columns"中被指定。这里有两个查询选项:"自动"和"单列"。它们在上面的"指定变量"中有所描述。
此外,过滤条件也可以在"WHERE"下指定。使用"Column"指定所需列的名称。要比较的值可以在"值"中指定。"操作者"定义了该值应如何与列名进行比较。
如果使用"LIKE"作为操作符,可以搜索到类似的条目。必须使用通配符"*"。如果"*Test*"被用作"Value",例如,条目"Test01"、"MyTest"和"MyTest01"可以被搜索到。
在一些数据库中,通配符"%"也被使用。
可以指定各种过滤器选项。这些都是通过"连接"相互连接的。
通过"Order by",查询的内容可以根据所需的列进行升序或降序排序。为此必须指定数据库表中使用的列名。
用例"在数据库中添加和查询生产数据" 解释了如何使用 "SELECT"。 |
连接mapp View ( 小组件 "Database")
配置中指定的SELECT查询可以使用小组件"数据库"执行和显示。关于如何配置小组件的解释,请参阅配置示例或使用小组件 "数据库"。配置中的参数"目的地"决定了查询的内容是否将只显示在小组件上,或者也显示在指定的过程变量上。
如果 "目的地=小组件",那么查询可以由小组件执行,查询的内容将只显示在 小组件"数据库"上。如果"目的地=进程变量",那么查询可以由小组件执行,查询的返回内容将显示在指定的进程变量和 小组件"数据库"中。欲了解更多信息,请看这里。
可以使用"INSERT"将信息添加到数据库中。所需的数据库表必须在"INTO"下指定。"列"决定了信息的添加方式。有关解释,请参见上面的"指定变量"一节。
用例"在数据库中添加和查询生产数据" 解释了如何使用"INSERT"。 |
"UPDATE"可以用来更新表中的信息。在 "表名"下指定所需的表名。然后你可以使用"列"来确定信息的更新方式。这里有两个选项,"自动"和"单列"。它们在上面的"指定变量"中有所描述。
此外,过滤条件也可以在"WHERE"下指定。使用"Column"指定所需列的名称。要比较的值可以在"值"中指定。"操作者"定义了该值应如何与列名进行比较。
如果使用"LIKE"作为操作符,可以搜索到类似的条目。必须使用通配符"*"。如果"*Test*"被用作"Value",例如,条目"Test01"、"MyTest "和 "MyTest01"可以被搜索到。
在一些数据库中,也使用通配符"%"。
可以指定各种过滤选项。这些都是通过"连接"相互连接的。
"CREATE TABLE"可以用来在数据库中创建一个新表。表的名称在"表名"下定义。
"列"定义了应该如何创建表中的列。这里有两个选项,"自动"和"单列"。它们在上面的"指定变量"中有所描述。
指定结构/变量的数据类型决定了数据库表中的数据类型!
"DELETE FROM "可以用来删除一个表的一个或多个列,必须用"表名"来指定。
应该被删除的条目在"WHERE"部分定义。这里可以定义不同的过滤选项。
使用"Column"指定所需列的名称。要比较的值可以在"值"中指定。"操作者"定义了该值应如何与列名进行比较。
如果使用"LIKE"作为操作符,可以搜索到类似的条目。必须使用通配符"*"。如果"*Test*"被用作"Value",例如,条目 "Test01"、"MyTest "和 "MyTest01"可以被搜索到。
在一些数据库中,也使用通配符"%"。
可以指定各种过滤选项。这些都是通过"连接"相互连接的。
可以在"自定义"下创建一个自我定义的SQL查询。在 "查询"下添加SQL代码。关于创建SQL查询的更多信息,请看这里的例子。
用例创建一个用户定义的查询显示了如何创建一个用户定义的查询。 |
在mapp Database中不能检查查询的有效性。如果在执行查询过程中出现错误,需要额外的信息,请参见脚本的命令窗口。更多信息,请看这里。
本节的主题:
•查询实例