Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Understanding Async Function Return ValuesSee more Async ExamplesExplains how to get the return value of the function called synchonously in the background thread.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Some Chilkat functions can be called asynchronously. -- If a function "Func" can be called asynchronously, there will be a corresponding "FuncAsync" function that returns a Task object. -- -- When Task.Run is called, the synchronous "Func" runs in a background thread. -- -- For Chilkat methods that return a status (1/0), get returned value by calling GetResultBool. -- For example.. DECLARE @sock int -- Use "Chilkat_9_5_0.Socket" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Socket', @sock OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- -------------------------------------------------------------- -- Synchronous call returning 1/0 DECLARE @success int EXEC sp_OAMethod @sock, 'Connect', @success OUT, 'example.com', 443, 1, 5000 -- -------------------------------------------------------------- -- Asynchronous call DECLARE @task int EXEC sp_OAMethod @sock, 'ConnectAsync', @task OUT, 'example.com', 443, 1, 5000 -- ... EXEC sp_OAMethod @task, 'Run', @success OUT -- ... -- ... -- Get the status (1/0) value returned by the synchronous method called in the background thread. EXEC sp_OAMethod @task, 'GetResultBool', @success OUT -- -------------------------------------------------------------- -- Synchronous call returning an integer DECLARE @count int EXEC sp_OAMethod @sock, 'ReceiveCount', @count OUT -- -------------------------------------------------------------- -- Asynchronous call EXEC sp_OAMethod @sock, 'ReceiveCountAsync', @task OUT -- ... EXEC sp_OAMethod @task, 'Run', @success OUT -- ... -- ... -- Get the integer value returned by the synchronous method called in the background thread. EXEC sp_OAMethod @task, 'GetResultInt', @count OUT -- -------------------------------------------------------------- -- Synchronous call returning an string DECLARE @s nvarchar(4000) EXEC sp_OAMethod @sock, 'ReceiveString', @s OUT -- -------------------------------------------------------------- -- Asynchronous call EXEC sp_OAMethod @sock, 'ReceiveStringAsync', @task OUT -- ... EXEC sp_OAMethod @task, 'Run', @success OUT -- ... -- ... -- Get the string value returned by the synchronous method called in the background thread. EXEC sp_OAMethod @task, 'GetResultString', @s OUT -- -------------------------------------------------------------- -- Synchronous call returning an object DECLARE @connection int EXEC sp_OAMethod @sock, 'AcceptNextConnection', @connection OUT, 5000 -- -------------------------------------------------------------- -- Asynchronous call EXEC sp_OAMethod @sock, 'AcceptNextConnectionAsync', @task OUT -- ... EXEC sp_OAMethod @task, 'Run', @success OUT -- ... -- ... -- Get the object returned by the synchronous method called in the background thread. -- We do this a little differently. We create an new object of the same type, -- and then load it with the returned object (assuming it was not null). DECLARE @acceptedConnection int -- Use "Chilkat_9_5_0.Socket" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Socket', @acceptedConnection OUT EXEC sp_OAGetProperty @task, 'TaskSuccess', @iTmp0 OUT IF @iTmp0 = 1 BEGIN EXEC sp_OAMethod @acceptedConnection, 'LoadTaskResult', @success OUT, @task END EXEC @hr = sp_OADestroy @sock EXEC @hr = sp_OADestroy @acceptedConnection END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.