Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ InTouch HMI

SQLExecute() 函数

  • Last UpdatedSep 24, 2024
  • 1 minute read

SQLExecute 函数在脚本中运行 SQL 查询。如果语句包含 SELECT,则 BindList 参数指定用于绑定数据库列与 InTouch 标记的“绑定列表”的名称。如果“绑定列表”为 NULL,则不进行任何关联标记的操作。

类别

SQL

语法

SQLExecute(ConnectionID,BindList,StatementID);

参数

ConnectionID

内存整型标记的名称,用于存放 SQLConnect() 函数指定给每个数据库连接的编号 (ID)。

BindList

BindList 参数可以是零长字符串。如果 StatementID 与返回行的查询关联,则使用 SQLExecute() 的结果更新逻辑表。如果指定实型“绑定列表”,则结果与 BindList 参数关联。预先知道 StatementID 不与返回行的查询关联时,零长“绑定列表”非常有用。

StatementID

使用 SQLPrepareStatement() 函数时 SQL 返回的整数值。

附注

错误在函数的返回值中返回。如果语句已经预备好,则应该传递 prepare 语句返回的语句句柄。如果语句尚未预备好,则该语句的句柄应该是零。

注意:对于尚未预备好的语句,SQLExecute() 函数只能调用一次。如果语句已经预备好,则可以调用它多次。

缺省语句与连接 ID 关联。它可以是文本型 SQL 语句(SELECT、INSERT、DELETE 或 UPDATE)、查询(带或不带参数)的名称(对于 MS Access),或存储过程(带或不带参数)的名称(对于 MS SQL Server)。

缺省语句由 SQLLoadStatement()SQLSetStatement() 以及 SQLAppendStatement() 函数修改。只要指定 StatementID = 0,SQLExecute() 便使用缺省语句。

示例

本例从 lotquery.sql 文件中加载 SQL 语句,并将 SELECT 语句的结果放入“绑定列表”指定的 InTouch 标记。

ResultCode = SQLLoadStatement (ConnectionID, "c:\myappdir\lotquery.sql");

ResultCode = SQLExecute(ConnectionID, "BindList", 0);

ResultCode = SQLNext (ConnectionID);

对于复杂查询以及超过 131 个字符的字符串表达式,必须使用这个 SQLSetStatement() 函数。字符串表达式超过 131 个字符时,请使用 SQLAppend() 函数。

SQLSetStatement(ConnectionID, "Select Speed, Ser_No from tablename where Ser_No =’" + Serial_input + "’");

SQLExecute(ConnectionID, "BindList", 0);

在上例中,StatementID 参数设置为零;因此在执行语句之前不必调用 SQLPrepareStatement(Connection_Id, StatementID)。

由于 SQLPrepare 语句没有创建 StatementID 来正确结束此 SELECT 语句,因此请使用 SQLEnd() 函数而不是 SQLClearStatement() 函数

SQLSetStatement(Connection_Id, "Select Speed, Ser_No from tablename where Ser_No =’" + Serial_input + "’");

SQLPrepareStatement(Connection_Id, StatementID);

SQLExecute(Connection_Id, StatementID);

在上例中,StatementID 由 SQLPrepareStatement 函数调用创建,并由 SQLExecute 函数使用。要结束此 SELECT 语句,请在脚本中使用 SQLClearStatement() 函数调用,以释放资源与 StatementID。

SQLExecute() 函数支持某些存储过程。例如,假设在数据库服务器 "LotInfoProc" 上创建了一个存储过程,它包含以下 select 语句:"Select LotNo, LotName from LotInfo"。

您编写 InTouch QuickScript 根据正在使用的数据库类型运行该存储过程。下例显示了运行 SQL Server 数据库的存储过程的脚本语句。

ResultCode = SQLSetStatement (ConnectionID,"LotInfoProc");

ResultCode = SQLExecute(ConnectionID, "BindList", 0);

ResultCode = SQLNext (ConnectionID);

{Get results of Select}

下例显示了运行 Oracle 数据库的存储过程的脚本语句。

ResultCode = SQLSetStatement (ConnectionID, "{CALL LotInfoProc}");

ResultCode = SQLExecute(ConnectionID, "BindList", 0);

ResultCode = SQLNext (ConnectionID);

{Get results of Select}

另请参阅

SQLConnect()、SQLPrepareStatement()

In This Topic
Related Links