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()