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 26, 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 によって返される整数値

備考

エラーは関数の戻りとして返されます。ステートメントが準備されている場合、その状態から返されたステートメント ハンドルを渡す必要があります。ステートメントが準備されていない場合、ステートメント ハンドルはゼロである必要があります。

注記:準備されていないステートメントに対する 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 =SQLTransact( ConnectionID);

この SQLSetStatement() 関数は、複雑なクエリーおよび 131 文字を超える文字列式に使用する必要があります。文字列式が 131 文字を超える場合は、SQLAppend() 関数を使用します。

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

SQLExecute(ConnectionID, "BindList", 0);

前の例では、StatementID 引数がゼロに設定され、ステートメントを実行する前に、SQLPrepareStatement(Connection_Id, StatementID) を呼び出す必要はありません。

StatementID はこの SELECT を適切に終了するために SQLPrepare によって作成されていないため、SQLClearStatement() 関数の代わりに SQLEnd() 関数を使用します。

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

SQLPrepareStatement(Connection_Id, StatementID);

SQLExecute(Connection_Id, StatementID);

上の例では、StatementID が SQLPrepareStatement 関数呼び出しによって作成され、SQLExceute 関数によって使用されます。この SELECT ステートメントを終了するには、スクリプト内で SQLClearStatement() 関数呼び出しを使用して、リソースと StatementID を解放します。

SQLExecute() 関数は、いくつかのストアド プロシージャをサポートしています。たとえば、"Select LotNo, LotName from LotInfo" という選択ステートメントを含む "LotInfoProc" という名前のデータベース サーバーでストアド プロシージャを作成すると仮定します。

使用しているデータベースのタイプに基づいてストアド プロシージャを実行する 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 =SQLTransact( ConnectionID);

{Get results of Select}

参照項目

SQLConnect()、SQLPrepareStatement()

In This Topic