ODBC Driver for QuickBooks Online

Build 20.0.7587

Execute Queries on a Linked Server

This section describes how to execute queries to the QuickBooks Online linked server from any tool that can connect to SQL Server.

When executing queries from a linked server, you must use a four-part name format, as shown below.

[<Linked Server Name>].[<DSN Name>].[<Schema Name (normally but not always the service name)>].[<Table Name>]

Where:

  • Linked Server Name is the name of the linked server that you created.
  • DSN Name is the name of the data source.
  • Schema Name is the name of the system schema or user-defined schema.
  • Table Name is the name of the table you are copying data from.

SELECT Statements

To create new records:

SELECT * FROM [Linked Server Name].[CData QuickBooksOnline Sys].[QuickBooksOnline].[Customers] WHERE GivenName = 'Cook, Brian'

INSERT, UPDATE, and DELETE Statements

To insert, update, or delete a single row of data (that is, not a batch of records), you need to use the four-part name. For example:

INSERT INTO [Linked Server Name].[CData QuickBooksOnline Sys].[QuickBooksOnline].[Customers] (GivenName) VALUES ('Cook, Brian');

To retrieve newly created IDs from an INSERT operation, you can query the sys_identity system table. For example:

SELECT * FROM OPENQUERY([Linked Server Name], 'SELECT * FROM sys_identity');

Bulk Operations

To perform bulk operations, you can use syntax similar to the following:

You can run a bulk INSERT using a SELECT query in place of a VALUES list.

INSERT INTO [Linked Server Name].[CData QuickBooksOnline Sys].[QuickBooksOnline].[Customers] ([GivenName])
SELECT [GivenName] from [CData].[dbo].[Local_Customers]

You can run a bulk DELETE using the IN filter with sub-SELECT query.

DELETE FROM [Linked Server Name].[CData QuickBooksOnline Sys].[QuickBooksOnline].[Customers] WHERE [Id] IN (SELECT [Id] FROM CData.dbo.Local_Customers)

Execute Stored Procedures

To execute stored procedures, you must first enable RPC and RPC Out in the settings for the linked server. Then, you can use the following set of commands to run the stored procedure:

DECLARE @RunStoredProcSQL VARCHAR(1000);
SET @RunStoredProcSQL = 'EXEC GetOAuthAccessToken AuthMode=''APP''';
EXEC (@RunStoredProcSQL) AT [Linked Server Name];

Copyright (c) 2020 CData Software, Inc. - All rights reserved.
Build 20.0.7587