Table Of Contents. KB_SQL ODBC Driver What's New? Understanding ODBC Driver Installation and Setup... 9
|
|
|
- Alexandra Philomena McGee
- 10 years ago
- Views:
Transcription
1 KBSODBCDriver
2
3 Table Of Contents KB_SQL ODBC Driver... 1 What's New?... 3 Understanding ODBC... 7 Driver Installation and Setup... 9 Server and Network Configuration Server Info Network Configuration TroubleShooting Starting the Server Starting the Server Stopping the Server Stopping the Server Simulating ODBC with QUICK^SQL Managing ODBC Data Sources Data Sources Tracing ODBC Calls Tracing_on_the_Client Tracing_on_the_Server Connection Pooling Windows Applications Programming Considerations ODBC API Calls iii
4 KBSODBCDriver M Programming ActiveX Data Objects (ADO) Appendixes A - Escape Sequences B - Connection Options C - Error Messages D - Info Types E - Data Types Index iv
5 KB_SQL ODBC Driver KB_SQL ODBC Driver The KB_SQL ODBC Driver allows you to connect your M database to a world of applications. This document describes the ODBC solution in the context of the KB_SQL Server product provided by Knowledge Based Systems, Inc. For more information about ODBC, please see the Microsoft documentation available at For questions about KB_SQL, please see the documentation available at To report a problem, or to get technical support, licensed users should have their database administrator contact KBS technical support at [email protected]. 1
6
7 What's New? Changes in this Release The KB_SQL ODBC Driver for KB_SQL Version 4 is a completely new and updated driver designed to work with the latest applications from Microsoft, including Microsoft Office97 and Office2000. ODBC SDK 3.51 Driver and server compatibility File data source names Silent configuration options Connection pooling Safe threads Multi-row fetch Custom network support Character set translation ODBC SDK 3.51 The version 4.0 KB_SQL ODBC driver has been updated to be compliant with Microsoft s latest SDK for 32-bit ODBC Drivers. Numerous performance and flexibility improvements have been made to the driver. Connection pooling Connection pooling enables an application to use a connection from a pool of established connections. If a connection has already been created and placed in a pool, an application can use that connection without performing the entire connection process. Re-using connections from the pool can increase performance since applications can save the overhead involved in making a connection. This is especially significant for middle-tier applications that connect over a network or in a situation where the application repeatedly connects and disconnects (e.g. Internet applications). Enabling Connection Pooling Connection pooling can be used by an ODBC application if the application calls SQLSetEnvAttr with the SQL_ATTR_CONNECTION_POOLING attribute. In order to enable connection pooling with KB_SQL s ODBC driver, it will be necessary to enable 3
8 KBSODBCDriver the feature and set the timeout value via the ODBC administrator. This timeout value determines the period of time which an inactive connection is removed from the pool. Driver and server compatibility We will continue to support older versions of the KB_SQL ODBC Driver that work in the ODBC version 2.x mode. This has been accomplished by physically separating the two versions of the Server API code, including the stored procedures for catalog functions. Please note that the older version of the stored procedures and SQL catalogue tables have been renamed. Version 2.x stored procedures and SQL catalogue tables all end with A (for example, SQL_SP_COLUMNSA). Please note that although older drivers can be used with the new server, using the older drivers will prohibit the use of new server features (for example, the LONG data type). In addition, because KBS will not be providing bug fixes for older releases, we strongly urge upgrading to the latest driver. Special Note About the 16-bit Driver Please note that no new development has been performed on the 16-bit ODBC driver. The 16-bit driver is currently in maintenance mode using Microsoft ODBC SDK Although applications using the 16-bit ODBC driver will continue to work, they will not be able to take advantage of any new features. File data source names We now support the dynamic creation of file data source names from the ODBC Administrator and Microsoft Office applications. Previous versions of the product required that file data source names be created manually. File DSNs can be shared on network drives and can simplify workstation configuration. Silent configuration options The product now supports DSN-less connections. This feature provides the ability to connect to a remote data source without having to create a data source in the ODBC Administrator, thus simplifying application distribution. Safe threads For customers that are using, or are interested in using multi-threaded applications such as Microsoft Transaction Server, Internet Information Server, and Java, version 4.0 fully supports safe threads. KB_SQL version 4.0 fully supports safe threads so that applications can use the same handle on more than one thread. In a multi-threaded environment, it is possible for each thread to have independent data. However, it is also possible for multiple threads to share data. In this situation, the different threads must cooperate in accessing the data. Multi-row fetch 4
9 What's New? We now support SQLExtendedFetch and SQLFetchScroll. In ODBC 3.0, SQLFetchScroll has replaced SQLExtendedFetch. These calls allow an application to retrieve multiple records at one time thus reducing the number of calls between the application and the driver. Custom network support Version 4 separates the client, network, and setup API functions so that each can be developed independently. Because the components are separated, customers have the option to develop custom network interface modules based on their networking or security conventions. Contact KBS technical support for more information on how you could implement a custom network module. Character set translation Prior to this release, ANSI to OEM character translation was performed on the server side by specifying the translation rules in the site global. With version 4.0, character set translation is performed on the driver side. To implement the character set translation, it will be necessary to specify the appropriate translation DLL for the data source name via the ODBC Administrator. 5
10
11 Understanding ODBC What is ODBC? ODBC (Open Database Connectivity) is a standard interface developed by Microsoft for accessing data from different kinds of SQL database management systems. See for additional information. What does this mean to the M Community? This means that you can use many of the Windows applications already on your desktop to get to your M data. With the KB_SQL Server together with the KB_SQL ODBC Driver, you can now use the Microsoft Office programs including Excel, Word, and Access or any ODBC-compliant Windows application to access your M data. You have many more choices for data access and reporting of your M application data. How does it work? The KB_SQL ODBC Architecture consists of six main components: your Windows application programs the ODBC Driver Manager the KB_SQL ODBC Driver networking software (TCP/IP) the KB_SQL Server Interface the KB_SQL Engine and relational data dictionary The KB_SQL ODBC Architecture Resident on your workstation, the client side, you need your Windows applications, the ODBC Driver Manager, the KB_SQL ODBC Driver, and the networking software. Your Windows applications can be any ODBC-compliant Windows application. They can be commercial off-the-shelf products like Microsoft s Excel and Visual Basic or custom applications. Microsoft provides The ODBC Driver Manager component. Its primary function is to load the driver. If it is not resident on your system at the time you install the KB_SQL ODBC Driver, the setup program, on your installation disk, will install it for you. The KB_SQL ODBC Driver enables any ODBC-compliant Windows application to access data from your KB_SQL RDBMS. The driver must be accessible to each workstation that wants to use Windows applications to access the KB_SQL Server. You can install the driver on as many workstations as you like. Access to 7
12 KBSODBCDriver your M data is limited only by your KB_SQL license, which determines the number of concurrent users. Networking software is necessary to communicate between the Driver and Server. The KB_SQL ODBC Driver requires TCP/IP networking software. On your server, you need to install KB_SQL Server and you need to have your M globals mapped as SQL tables into a SQL data dictionary. If you have any previous version of KB_SQL, this has already been done. The KB_SQL Server Interface encapsulates the Server API and Network Library M, and exposes the KB_SQL Engine to the client. Benefits of KB_SQL ODBC You are free to select the application that is most appropriate for the task at hand. At any point in time, you can choose to use either the EZQ or SQL Editors that come packaged with KB_SQL, or you can select from many ODBC-compliant Windows applications. You can continue to access your M data from a terminal or choose a workstation that has access to a KB_SQL ODBC Driver. KB_SQL ODBC simplifies application development. You can write a single application that can be used to extract data from many different databases, permitting maximum interoperability and portability of the application. With KB_SQL ODBC, accessing M is like accessing any other RDBMS. Actually, the fact that you may be accessing different types of databases concurrently is transparent to you. 8
13 Driver Installation and Setup Before you begin Before installing the KB_SQL ODBC Driver, there are a couple of items to note. Is the Server installed and configured? Do you know the Server configuration parameters for the Hostname (or IP address), and listening port? Can you ping the Server using the Hostname (or IP address)? If running WindowsNT, do you have Administrator privileges? Driver Installation Step 1: Launch the KB_SQL ODBC Driver Installer. Step 2: Accept the terms of the license agreement. After accepting the terms, the installer will update your system with the KB_SQL ODBC Driver and other ODBC Components. 9
14 KBSODBCDriver Default Data Source Create a The installer continues, allowing you to create a Data Source as part of the installation. Step 4: Give the Data Source a name and description. Step 5: Specify the Network parameters. 10
15 Driver Installation and Setup Step 6: Specify a Code Page Translator Step 7: Congratulations! 11
16 KBSODBCDriver 12
17 Server and Network Configuration Server Info ServerInfo Prefix for stored query routines Maximum number of stored queries Allow connections Trace API calls Edit network configuration Server initial execute Server user initial execute Prefix for stored query routines Assign a name to the holding place for the last x number of queries run. For example, if you enter XA, the Server API allocates routine names starting with XA1 up to the maximum number of stored queries specified. Maximum number of stored queries 13
18 KBSODBCDriver Enter the number of queries that you want held in the stored queries buffer on the server. The value you supply is a matter of storage space versus processor resources. Assigning a large number requires more storage capacity but less processing time. Conversely, assigning a smaller number requires less space to store queries, but causes more processing by the SQL engine. Here s why: As the Server API receives each SQL command, it checks the stored queries buffer for the command s corresponding M routine. If it finds the M routine, it simply runs it. If it doesn t, it has to use the SQL engine to translate the command into one or more M routines. The M routine and corresponding SQL command are then stored and assigned a routine name using the base routine prefix. If you specify a large number, say 999, many commands can be processed before having to reuse a stored query for another command. When the maximum number has been reached, KB_SQL reuses the oldest stored query to store the next query s M routine and corresponding SQL command. You may clear the stored queries buffer of all routine names by invoking the RL^SQL tag. Allow connections Answer YES to accept connections to the server. Answer NO if you want to refuse connections. Note that the server will not start if the system lock is set. (Refer to the UTILITIES\LOCK STATUS option.) If the server is running and you want to stop allowing connections, first invoke the STOP^SQL0SVR function. Then set this prompt to NO. Regardless of the setting of this prompt, the server can always be run in foreground useful for testing purposes when you don t want the server to be started in background. If the server is not running when you set this value to YES, you still have to start the server. It is n ot automatically started. To start the server, see the instructions for starting and stopping the KB_SQL Server later in this chapter. Trace API calls Answer YES if you want to track information about the dialog between the server and clients. This creates a log that you can view by using the SQL Editor to run the SQL_ API_SERVER_TRACE query, or by using the tag VIEW^SQL0SVR. Edit network configuration Answer YES if you want to edit TCP/IP defaults or host information. The TCP/IP Defaults window will appear. A discussion of this process begins on the next page. Server initial execute 14
19 Server and Network Configuration Enter the M code that will instantiate any variables that are required by your application during the runtime execution of queries. Server user initial execute Enter the M code that will validate and/or establish the username (SQLUNAME) and password (SQLUAUTH) variables referenced during the connection to the server. Network Configuration NetworkInfo n general, the network information you are required to provide consists of the TCP/IP host and port information. Depending on your M implementation type, you might be required to provide alternate ports. TCP/IP Defaults TCP/IP Host Definition TCP/IP Port Defintion TCP/IP Defaults 15
20 KBSODBCDriver Timeout for read Enter the number of seconds after which a READ command commands should timeout and check error status (default = No timeout) Maximum length Enter the maximum size of an M string value in this of M string implementation (default = 511). Output buffer size Enter the output buffer size in bytes (default = 2048). Input buffer size Enter the input buffer size in bytes (default = 2048). TCP/IP Host Definition Host name Enter the TCP/IP hostname for the server. IP address Enter the internet protocol address for the server. If your system uses dynamic ip address allocation, enter the host name in this field. Description Enter a brief description of this server. Local host? Enter YES if you are describing the server on which KB_SQL is running. Enter NO if you are documenting another server. TCP/IP Port Definition 16
21 Server and Network Configuration Port number Port server? The port number is expected to be in the range of Answer YES if this is the published port for connecting to this server. Answer NO if this is an alternate port to be used internally. TroubleShooting Network Troubleshooting Troubleshooting network connections can be challenging due to complex configurations. However, we've found that most of the errors related to KB_SQL have been incorrectly configured servers. It is easy to check the configuration of your server using our built-in testing tool, TEST^SQL0TCP. In general, we try to include useful information in error message displays. As for networking errors, we try to include the Windows Sockets (WinSock) error code as part of the message. If you see Connection Refused, you probably need to check that your server is started. If you receive the error No Route to Host, you might have specified a host address incorrectly. Using TEST^SQL0TCP VMS Cluster Issues Using TEST^SQL0TCP There are low-level TCP/IP testing tools available through KBS technical support. If you think you are having network trouble, please call us. 17
22 KBSODBCDriver Starting with KB_SQL v3.6, we provide a simple utility to test the configuration of your Server and Network. The TEST^SQL0TCP utility will attempt connections from your Server back to itself, and keep trying connections until it fails. For example: >D TEST^SQL0TCP KB_SQL Server Connect Test Server Name or Address: // Port Number : 6500// UserName : DBA PassWord : Connecting to (6500) Error in connect: 0579: TCP/IP Timeout in Open As the error message implies, the attempt to connect has timed out. The most likely cause is that the server is not started. >D START^SQL0SVR >W $D(SQLERR) 0 This attempt to start the server is successful, as it does not return an error in the SQLERR variable. Now, try the connect test again. >D TEST^SQL0TCP KB_SQL Server Connect Test Server Name or Address: // Port Number : 6500// UserName : DBA PassWord : Connecting to (6500) Connected to #1: TCP 5~ ~ Connecting to (6500) Connected to #2: TCP 6~ ~ Connecting to (6500) Connected to #3: TCP 7~ ~ Connecting to (6500) Connected to #4: TCP 8~ ~ Connecting to ( 6500) Connected to #5: TCP 9~ ~ Connecting to (6500) Connected to #6: TCP 10~ ~ Connecting to (6500) Connected to #7: TCP 11~ ~ Connecting to (6500) Connected to #8: TCP 12~ ~ Connecting to (6500) Error in connect: [S1000] (139): [Knowledge Based Systems, Inc.][Server API][V4.0]SQLConnect: Exceeded KB_SQL V4.0 license limit 18
23 Server and Network Configuration Disconnecting #8: TCP 12~ ~ Disconnecting #7: TCP 11~ ~ Disconnecting #6: TCP 10~ ~ Disconnecting #5: TCP 9~ ~ Disconnecting #4: TCP 8~ ~ Disconnecting #3: TCP 7~ ~ Disconnecting #2: TCP 6~ ~ Disconnecting #1: TCP 5~ ~ Notice that it gets 8 connections before it encounters an error. It shows that this attempt to connect is rejected because it would exceed the current limit of your license. This is the error that you want to get in this context. It ensures that everything is working. If you get other errors, it is helpful to pass on the information to our technical support. Currently, the most common problem with connecting is that the Server is not started. We recommend adding START^SQL to your system startup logic. The second most common problem is for those M types that require alternate ports (ISM, DSM, and others), that not enough are configured. We always recommend configuring at least as many ports as you have connections on your license. Configuring more doesn't hurt either. VMS Cluster issues On VMS clusters, it gets very tricky when starting an M process to listen for connections. The M database has a single definition of the local host. One or more nodes can access the database. Starting the listener from a node other than the one identified in the local host setting can have confusing consequences. One way of preventing this problem is to disable the auto startup feature using Site Edit. Another way is to add code to the Server StartUp Execute to test whether the current node matches the local host definition. If it doesn't, then the Server should not be allowed to start. Simply return an error in SQLERR. Starting the Server Starting the Server There are several methods available for starting the KB_SQL Server. You may start it either in the foreground for analysis and debugging purposes or in the background for a multi-user production environment. Foreground Options Background Options Foreground You may run the KB_SQL Server in foreground during configuration until you are satisfied that you are able to connect and process client requests. The following foreground options are available: 19
24 KBSODBCDriver 1. Output to Screen Command: >D ^SQL0SVR Description: This command is for general configuration, analysis and debugging. Sample Output: Waiting for client connection... KBSGetInfoShort("1010","23") = (0,"2") KBSGetInfoShort("1010","24") = (0,"2") SQLAllocStmt("1010") = (0,"2007") SQLPrepare("2007","select * from employees") = (0,"1") SQLNumResultCols("2007") = (0,"4") SQLDescribeCol("2007","1") = (0,"EMP_SSN","12","11","0","0") SQLDescribeCol("2007","2") = (0,"NAME","12","15","0","0") SQLDescribeCol("2007","3") = (0,"SALARY","2","5","2","1") SQLDescribeCol("2007","4") = (0,"MANAGER","12","11","0","1") SQLExecute("2007") = (0) KBSRowsetFrame("2007","1","20480") = (100,"48"," ","JOHNSON","9"," ",... SQLFreeStmt("2007","0") = (0) SQLFreeStmt("2007","0") = (0) SQLDisconnect("1010") = (0) 2. Output to File Command: >D FILE^SQL0SVR("[FILE NAME]") Example: >D FILE^SQL0SVR("c:\temp\svrtrace.log") Description: This command is used to capture the output from a client/kb_sql Server interaction for analysis, debugging, or submittal to KBS Technical Support. 3. Output to Printer Command: >OPEN %DEV USE %DEV DO ^SQL0SVR CLOSE %DEV Example: >O 3 U 3 D ^SQL0SVR C 3 Description: This command is used to capture output from a client/kb_sql Server interaction for analysis, debugging, or submittal to KBSs Technical Support. 4. Without Error Trapping Command: DO NOTRAP^SQL0SVR Description: This option turns off KB_SQL error trapping. When a hard M error is 20
25 Server and Network Configuration encountered, the server will stop and the error will be displayed in the native format for your M implementation Note: The foreground server options are intended only for analysis or debugging purposes. As it allows only a single connection, it is not appropriate for a multi-user environment. Background If you have answered Yes to Allow Connections? in Site Edit/Server Info and your KB_SQL Server is properly configured, you may start the server simply by logging into KB_SQL as a DBA or System Manager. You may also type: >D START^SQL0SVR at the M prompt. This command line option allows you to start KB_SQL Server during the startup of your M system or other times without the requirement to log into KB_SQL. If, for some reason, the Server fails to start, the variable SQLERR may be trapped and be used to determine the reason for failure. Stopping the Server Stopping the Server You may need to stop the KB_SQL Server for various reasons (shutting down M, system maintenance, etc.) You may stop the KB_SQL Server with the following command: D STOP^SQL0SVR This command may be called from procedures such as Shutdown, etc. Note: It is important to understand that this command does not affect current connections to the KB_SQL Server. It does, however, prevent any new connections from being established. As some applications require multiple database connections for operation, it is best to ensure that everyone is logged off before stopping the KB_SQL Server. You may check current connection status by choosing Connections on the System Status menu. 21
26
27 Simulating ODBC with QUICK^SQL Using QUICK^SQL The Quick SQL Editor (QUICK^SQL) is a KB_SQL query interface that lets you use Windows Notepad to enter your SQL statements, save the statements as a text file, and execute the file from the QUICK utility. Queries executed from this interface take the same path as a query created from an ODBC application. Because of this you can use this editor to simulate queries from ODBC applications. The Quick SQL Editor is also a valuable tool for testing stored procedures and parameterized queries. >D QUICK^SQL Password: Enter SQL Command GO Execute command STOP Exit RESET Clear command CALL procedure() Call stored Read commands from file -->SELECT NAME, PROJECT FROM PROJECTS -->GO NAME PROJECT GREEN PHARMACY ROBERTS LABORATORY ROBERTS MEDICAL RECORDS GREEN ACCOUNTING (4 rows) 23
28
29 Managing ODBC Data Sources Data Sources Data Source Types There are two types of data sources: machine data sources and file data sources. Although both contain similar information about the source of the data, they differ in the way this information is stored. Because of these differences, they are used in somewhat different manners. Data Description source User These are local to a computer, and can only be used by the current user. User DSN data sources are registered in the HKEY_CURRENT_USER registry subtree. System These are local to a computer, rather than dedicated to a user. The system, or DSN any user having privileges, can use a data source set up with a system data source. System DSNs are registered in the HKEY_LOCAL_MACHINE registry subtree. File These are file-based sources that can be shared between all users that have the DSN same drivers installed, and so have access to the database. These data sources need not be dedicated to a user or local to a computer. File data sources do not have a data source name, as user or system data sources do; they are identified by a file name with a DSN extension. User and system data sources are collectively known as machine data sources because they are local to a computer. Each of these data sources has a tab in the ODBC Administrator that is dedicated to that type. File DSN File data sources are stored in a file and allow connection information to be used repeatedly by a single user or shared among several users. When a File DSN is used, the Driver Manager makes the connection to the data source using the information in a.dsn file. This file can be manipulated like any other file. A File DSN does not have a data source name, as does a machine data source, and is not registered to any one user or machine. A File DSN streamlines the connection process, because the.dsn file contains the connection string that would otherwise have to be built for a call to the SQLDriverConnect function. Another advantage of the.dsn file is that it can be copied to any machine, so that identical data sources can be used by many machines as long as they have the appropriate driver installed. A File DSN can also be shared by applications. 25
30 KBSODBCDriver A shareable File DSN can be placed on a network and used simultaneously by multiple applications. A file DSN can also be unshareable. An unshareable.dsn file resides on a single machine and points to a machine data source. Unshareable File data sources exist mainly to allow the easy conversion of machine data sources to File DSN so that an application can be designed to work solely with File DSNs. When the Driver Manager is sent the information in an unshareable File DSN, it connects as necessary to the machine data source that the.dsn file points to. Example Here is an example of a File DSN for a KB_SQL connection. Note that the file is typically stored in the default path provided by Microsoft, but the file can be stored anywhere including on a networked drive. C:\Program Files\Common Files\ODBC\Data Sources\KBSQL.DSN [ODBC] DRIVER=KB_SQL ODBC 32-bit Driver UID=DBA SERVER=KB_SQL MaximumString=220 CommunicationBuffer=20 Network=C:\WINNT\System32\kbnet32.dll Setup=C:\WINNT\System32\kbset32.dll TCP_PORT=6500 HOST= Tracing ODBC Calls Tracing API Calls One of the best ways to understand what is going on when an application uses an ODBC connection to a remote data source is to trace the conversations. There are several conversations going on. The client-side-trace refers to the tracing of the conversation between the application and the ODBC Driver Manager. The server-side-trace refers to the tracing of the conversation between the KB_SQL ODBC Driver and the KB_SQL Server. In general, the server-side trace is the most useful to KBS support and is also the easiest to interpret. The client-side trace is a secondary source of information. It can be challenging to interpret -- let us help you. Tracing_on_the_Client Tracing on the Client The ODBC Driver Manager has a trace facility that allows the sequence of function calls made by an ODBC application to be recorded and transcribed into a log file. Tracing is 26
31 Managing ODBC Data Sources performed by a trace DLL that captures calls between the application and the Driver Manager, and the Driver Manager and the driver. This method of tracing replaces the tracing performed by the ODBC 2.x Driver Manager and the tracing performed in ODBC 2.x by ODBC Spy. Enabling tracing Certain situations call for examination of the conversational exchange between the application and the driver manager. This can be accomplished using the tracing option provided by Microsoft. Sample trace output The trace file can be large and its contents are not intuitive. However, these details are invaluable to KBS technical support representatives when trying to diagnose application 27
32 KBSODBCDriver behaviors. Tracing_on_the_Server Tracing on the Server In developing your own custom Windows applications for use with your KB_SQL database, you may find it necessary from time to time to view the interaction between your application and the KB_SQL Server. All communication between ODBC-compliant applications and KB_SQL occurs in sequences of function calls. These function calls may be recorded and reported on for both informative and debugging purposes. The following sections will describe the enabling of the API Trace feature and the viewing of the output of an API Trace session. Enabling the API Trace Feature Viewing the API Trace Interpreting the API Trace Enabling the API Trace Feature 1. Sign on to KB_SQL as DBA or System Administrator. 2. Choose SYSTEM STATUS. 28
33 Managing ODBC Data Sources 3. Choose SERVER INFO. 4. Choose TRACE OPTIONS. 5. Select ENABLE TRACING. Caution: The API Trace feature is intended for informative and debugging purposes only. It is not intended to be run in a production environment. If it is necessary to use the trace, we recommend turning it on right before you use it and turning it off immediately afterwards. Viewing the API Trace 1. Sign on to KB_SQL. 2. Choose SYSTEM STATUS. 3. Choose SERVER INFO. 4. Choose TRACE OPTIONS. 5. Select VIEW TRACE. 29
34 KBSODBCDriver Interpreting the API Trace Upon running the SQL_API_SERVER_TRACE query, you will see a screen describing the connection information for the most recent KB_SQL Server connection. Following this information is the sequence of function calls from the client application to the KB_SQL Server, ordered from earliest to last. There are a number of sources you may use in helping you to determine the functionality behind each of these function calls: The online query SQL_API_LIST. This query lists all ODBC API functions supported by KB_SQL with a brief description of each. See ServerAPI functions for an overview of the KB_SQL ODBC Architecture as well as a detailed description of all currently supported function calls. The Microsoft ODBC 2.0 Programmer s Reference and SDK Guide. This is the definitive work on the ODBC specification. KBS recommends this book to anyone involved in developing and deploying ODBC-compliant applications. Connection Pooling Connection pooling Connection pooling enables an application to use a connection from a pool of established connections. If a connection has already been created and placed in a pool, an application can use that connection without performing the entire connection process. Re-using 30
35 Managing ODBC Data Sources connections from the pool can increase performance since applications can save the overhead involved in making a connection. This is especially significant for middle-tier applications that connect over a network or in a situation where the application repeatedly connects and disconnects (e.g. Internet applications). Enabling Connection Pooling Connection pooling can be used by an ODBC application if the application calls SQLSetEnvAttr with the SQL_ATTR_CONNECTION_POOLING attribute. In order to enable connection pooling with KB_SQL s ODBC driver, it will be necessary to enable the feature and set the timeout value via the ODBC administrator. This timeout value determines the period of time which an inactive connection is removed from the pool. 31
36
37 Windows Applications Overview of Windows Applications Using Windows Applications with KB_SQL is just as it is for using Windows applications with any oth er SQL Data Source. See the documentation for the specific Windows application for more information about working with SQL Data Sources. Microsoft Access Connecting Connecting from Microsoft Access to your M system is easy using the KB_SQL ODBC Driver. The connection will be attempted based on a decision made within Access, typically during t he file linking process. You are able to use any of the connection types and you will be e xpected to log in with your KB_SQL username and password. Save password During the connection process, you will have the option of saving your username and password with the Access database information. This would allow you to reopen the database and reconnect to the server without having to reenter your username and password information. Note also that this capability can be disabled by correctly configuring the MsysConf table on the server. Contact KB Systems technical support for more information. S hould I import or link a table? M icrosoft Access provides two cho ices for using data from an external source: Import the M data into a new Microsoft Access table in the current database. Leave the data in the M database and use it in its current format without importing it -- this is called linking. If you know you will use your data o nly in Microsoft Access, you should import it. Microsoft Access generally works faster with its own tables, and if you need to, you can modify the imported table to meet your needs just like any other table created in Microsoft Access. One of the key considerations here is the volume of data and the security issues related to removing a copy from the server. These issues should be considered with your a pplication vendor or information systems department representative. If the data you want to use is also being updated by a program other than Microsoft Access, you should link it. Using this approach, the current methods of updating, managing, and sharing the data can rem ain in place, and you can use Microsoft Access to work with the data as well. For example, you can create queries, forms, and reports that use the external data, combine external data with the data in Microsoft Access tables, and even view and edit the external data while others are using it in the original program. Recordsets: Dynasets and Snapshots 33
38 KBSODBCDriver Microsoft Access uses the JET (Joint Exchang e Technology) Engine to manage database interactions. The JET Engine is a powerful query processor with many features, including the intelligence to perf orm distributed queries across multiple data sources. The results of queries run through JE T are stored in record se ts. These record sets can be of two types: Dynasets or Snapshots. For the most part, you will probably want snapshots as these are designed purely for retrieval and reporting purposes. If you are doing updates, dynasets will allow you to update rows on the remote data source. Data types Microsoft Access has its own set of data types. These types are mapped onto the ODBC types which are themselves mapped on to the data types supported on the data source. This can lead to confusion. The documentation for Microsoft Access is your best guide to understanding why the data appears different in an Access database than it does when you look at the same data on the server. Microsoft Query Connecting Connecting from Microsoft Query to your M s ystem is easy using the KB_SQL ODBC Driver. As of Microsoft Office97, MSQuery w as biased towards the use of file DSNs. This limitation is removed with Microsoft Office97 Service Pack #2. You are able to use any of the connection types and you will be expected to log in with your KB_SQL username and password. GetExternalData The option to use MSQuery from Excel and Word is dependent on your installation. The MSQuery component is not installed by default. If it is not available to you, check with your system administrator. Return Data to Excel Assum ing you have the option installed for ge tting external data, the obvious next step is to return the data to Excel. The rules for saving the data, query, and password information are all controlled by the Microsoft applications. Please check with the application documentation if you have questions about how data is returned. Data types M icrosoft Query has its own set of data types. These types are mapped onto the ODBC types which are also mapped to the data types supported on the data source. This can lead to confusion. The documentation for Microsoft Query, Excel, or Word is your best guide to understanding why the data appears differen t in a Microsoft Office application than it does when you look at the same data on the server. 34
39 Programming Considerations Architecture Accessing the KB_SQL Engine from Windows The KB_SQL Client API can be accessed as a dynamic link library (DLL) from Windows via C or Visual Basic. A Windows programming paradigm, the DLL allows one copy of a set of functions to be accessed by multiple applications. In Visual Basic, the Server API is accessed directly through the KB_SQL ODBC Driver. The ODBC Driver Manager is not involved. Again, TCP/IP provides your connection to the Server API. Expectations: Experience with Windows programming, DLLs, Windows applications, and gateways Statement Execution The KB_SQL API supports two methods of statement execution: the direct method (usi ng the SQLExecDirect function) and the prepare/execute method (using the SQLPrepare and SQLExecute functions). When an SQL statement is prepared it is sent to the server, parsed, and optimized. This is the ideal method for statements that are executed repeatedly, each time with different parameter values. An application should prepare a statement for execution if any of the following are true: The application will repeatedly execute the statement. The application needs information about the result set before executing the statement. An application can execute a statement directly if both are true: The application will execute the statement only once. The application does not need information about the result set before executing the statement Parameters An application can send parameters at statement execution time by calling the following functions: SQLBindParameter specifies the SQL data type of the parameters and reserves storage location for each parameter. SQLPutData sends data value for the parameter to the driver. 35
40 KBSODBCDriver Using data-at-execution parameters is useful for applications handling long data. See also Parameter_Markers Parameter Markers Parameter markers in a prepared SQL statement are placeholders for parameter values that ar e supplied by an application. Parameter markers are delimited by question marks. Using parameter markers in an SQL statement lets you execute the statement repeatedly with different values. This is a more efficient alternative to coding literal values in an applica tion, and changing the application each time the parameters change. To use parameter markers, the application must first call the SQLBindParameter function to bind a storage area to a parameter marker. Then the application must place the parameter s value in the storage location. Examples of using parameter markers are found in the Stored Procedures section of this chapter. See also Parameters Stored Procedures The KB_SQL Server API supports the use of stored procedures as a collection of precompiled SQL statements residing on the server. An application can call a procedure in place of an SQL statement. Stored procedures help to increase performance and consistency when performing repetitive tasks because they are compiled the first time they are executed. When executed again, subsequent run time is much shorter than for the equivalent set of stand-alone statements. Stored procedures simplify application development because you can repeatedly change them without modifying and compiling the application. Stored procedures can be created for permanent or temporary use. Temporary Stored Procedures KB_SQL creates a stored procedure for every set of SQL statements that are submitted from client applications. These procedures are available for use by all server queries for as long as the procedure is in the buffer of stored queries on the server. The query text is stored under a name where nnn represents the number of the query relative to the number of stored queries allowed. IMPORTANT: DBA users can copy the definition of a server query into a new query, but server queries should not be modified in any way. Permanent Stored Procedures KB_SQL can make any stored procedure permanent so that it will always be available regardless of the size of the stored query buffer. This type of procedure is desirable for use within custom applications. It allows the application to be developed independently of the server-side SQL statements. Only the calling parameters and result set must stay constant. Otherwise, the stored procedure can be modified as needed without affecting the client application. Steps to create a permanent stored procedure 1. Create a query that returns a result set in the ODBC format. SET CLIENT=ODBC 36
41 Programming Considerations This parameter is automatically inserted into SQL statement buffers sent from client applications. Setting STORED_PROCEDURE implicitly sets the CLIENT type. 2. Indicate that the procedure is permanent. SET STORED_PROCEDURE=YES This makes the query take on the characteristics of a stored procedure until you remove the setting. This query will appear in the result set for the SQLProcedures function. 3. Give names to input parameters (optional). SET PARAMETERS='name,city,state' You can choose to specify names for parameter markers in any query. This acts as documentation, and is accessible in the result of the SQLProcedureColumns function. Note that setting PARAMETERS implicitly sets the CLIENT type and STORED_PROCEDURE indicators. Running a stored procedure Replace the SQL statements in your application with the ODBC escape clause syntax for calling a stored procedure. Syntax {call procedure-name[(parameter[,parameter...])]} Example Replace: Select Name, Position, Salary, Comments From Employees Where EmpDept =? With: {call DeptEmps(?)} The? represents a parameter marker, in this case used to receive the department identifier. Rules Users must have SELECT privileges on the stored procedure query. The stored procedure query must be compiled in order to show in SQLProcedures, SQLProcedureColumns, or to be executed. The server will require that the number of parameters in the reference must match the number in the procedure definition. Parameter values can be specified as all literals, or all parameter markers, but not a mix. For example: Legal {call xyzproc(?,?)} {call xyzproc('abc','123') Illegal {call xyzproc(?)} -- 2 parameters required {call xyzproc('abc',?)} -- Cannot mix types 37
42 KBSODBCDriver If the parameters or the result set changes, you would have to respecify your application. Otherwise, changes can be made to the logic on the server side by editing and recompiling the query. Testin g stored procedures You may test stored procedures by using the sample routine SQLJ13. This program will let yo u enter the ODBC syntax for calling the procedure. Example >{call xyzproc(?,?)} >go Use the Execute SQL option in MSQuery to invoke a stored procedure. Note that this interface does not have a mechanism for collecting input parameters, so you must supply the values as string literals. Example {call xyzproc('abc','123')} ODBC API Calls Functions KB_SQL API Function Summary Belo w are the KB_SQL API functions, grouped by type of task, including a brief description of the purpose of each function. For more information about the syntax and semantics of each function, consult the alphabetical reference section of this chapter. Task Connecting to a data source Function Name SQLAllocEnv Purpose Obtains an environment handle. An environment handle can be used for one or more connections. SQLAllocConnect Obtains a connection handle. A connection handle can be used for one or more statements. SQLConnect Connects to a specific driver by data source name, user ID, and password. SQLDriverConnect* Connects to a specific driver by connection string or invokes driver display connection dialog boxes. Obtaining information about a driver and data SQLGetInfo Returns information about a specific driver and data source. source SQLGetTypeInfo Returns information about supported 38
43 Programming Considerations Setting and retrieving driver options data types. SQLGetFunctions Returns supported driver functions. SQLSetConnectOption Sets a connection option. SQLGetConnectOption Returns the value of a connection option. SQLSetStmtOption Sets a statement option. SQLGetStmtOption Returns the value of a statement option. Preparing SQL requests Submitting requests KBSStatement Inserts partial SQL statements. SQLAllocStmt Allocates a statement handle. SQLPrepare Prepares an SQL statement for later execution. SQLBindParameter Assigns storage for a parameter in an SQL statement. SQLGetCursorName Returns the cursor name associated with a statement handle. SQLSetCursorName Specifies a cursor name. SQLDescribeParam Returns the description of a parameter marker associated with a prepared SQL statement. SQLExecute Executes a prepared statement. SQLExecDirect Executes a statement. SQLNativeSql Returns the SQL command text as translated by the server. SQLNumParams Returns the number of parameters in an SQL statement. SQLParamData* Used in conjunction with SQLPutData to supply parameter data at execution time. SQLPutData Send part or all of a data value for a parameter. Retrieving Results and information about results SQLRowCount Returns the number of rows affected by an insert, update, or delete request. SQLNumResultCols SQLDescribeCol SQLColAttributes SQLBindCol Returns the number of columns in the result set. Describes a column in the result set. Describes attributes of a column in the result set. Assigns storage for a result column and 39
44 KBSODBCDriver specifies the data type. SQLFetch Returns a result row. SQLGetData Returns a specific column value from a statement cursor. Retrieving Results SQLError Returns additional error or status and information about information. results (continued) Obtaining information SQLColumnPrivileges Returns a list of columns and associated about the data privileges for the specified table. source s system tables (catalog functions) SQLColumns Returns a list of column names in specified tables. SQLForeignKeys Returns information about the foreign keys for a table. SQLPrimaryKeys Returns the list of column name(s) that comprise the primary key for a table. SQLProcedures Returns the list of procedure names stored in a specific data source. SQLSpecialColumns Returns information about the optimal set of columns that uniquely identifies a row in a specified table, or the columns that are automatically updated when any value in the row is updated by a transaction. SQLStatistics Returns statistics about a single table and the list of indexes associated with the table. SQLTablePrivileges Returns a list of tables and the privileges associated with each table. SQLTables Returns the list of table names stored in a specific data source. Terminating a statement SQLFreeStmt SQLCancel Ends statement processing and closes any associated cursors, discarding pending results, and optionally, frees all resources associated with the statement handle. Cancels an SQL statement. SQLTransact Commits or rolls back a transaction. Terminating a SQLDisconnect Closes the connection. connection SQLFreeConnect Releases the connection handle. SQLFreeEnv Releases the environment handle. 40
45 Programming Considerations For information on using the ODBC API functions from other programming languages, see th e Microsoft ODBC Software Development Kit and Programmer's Reference. M Programming Overview_M_Programming KB_SQL API Function Reference The following pages describe each KB_ SQL API function in alphabetic order. Each function is defined as an M programming language function. Descriptions may include some or all of the following items: Arguments Returns Syntax Examples Notes Options Result set Related functions Add SQL access to your M routines. KB_SQL provides SQL access to M data. You can choose to leverage this power for reporting, data browsing, updating, or any combination. With the KB_SQL API functions, you can encapsulate your SQL references in your M programs. This combination allows you to leverage your M programming skills with a well-defined, controlled interface to the data using SQL. A Word about Variable Names. Variable names shown in the following functions are used for illustrative purposes only. KB_SQL reserves the letters SQL for use as the first three letters of our variable names. We suggest you use variable name conventions suitable to your operation. KBSStatement Inserts part of an SQL command into the SQL input buffer. Arguments Statement handle [SQLHSTMT] SQL command [SQLTEXT] Returns Return code [SQLCODE] Syntax SQLCODE=$$KS^SQLOS(SQLHSTMT,SQLTEXT) Example 41
46 KBSODBCDriver S SQLCODE=$$KS^SQLOS(SQLHSTMT, SQLTEXT) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function can be used to insert partial SQL commands to the SQL server. Its purpose is to support SQLPrepare. Splits should occur on a space or punctuation character. A special subroutine, SPLIT^SQLK4, may be invoked to automate this process For example, suppose X contains a long line (375 characters), thus exceeding the default limitation of 255 bytes M imposes on strings. X SELECT COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, COL17, COL18, COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26, COL27, COL28, COL29, COL30, COL31, COL32, COL33, COL34, COL35, COL36, COL37, COL38, COL39, COL40 FROM TABLE WHERE COL1 = 100 AND (COL2 = 200) ORDER BY COL3 You can invoke the SPLIT^SQLK4 subroutine to decompose the line into smaller segments. It attempts to split first on a space boundary, followed by one of several punctuation characters. >D SPLIT^SQLK4 X( 0) 7 X(1) SELECT COL1, COL2, COL3, COL4, COL5, COL6, COL7, X(2) COL8, COL9, COL10, COL11, COL12, COL13, COL14, X(3) COL15, COL16, COL17, COL18, COL19, COL20, COL21, X(4) COL22, COL23, COL24, COL25, COL26, COL27, COL28, X(5) COL29, COL30, COL31, COL32, COL33, COL34, COL35, X(6) COL36, COL37, COL38, COL39, COL40 FROM TABLE WHERE X(7) COL1 = 100 AND (COL2 = 200) ORDER BY COL3 Now, you simply call KBSStatement for each entry in X(n). Wh en using this function, you must still invoke the SQLPrepare function. Typically, this invocation occurs in the last segment of the SQL command text. For example, assume X is very long. Below you see a sequence of typical statements from the subroutine s point of entry through the call to SQLPrepare. >D SPLIT^SQLK4 >S N=X(0) Note: X(0) contains the count of elements. >F I=1:1:N-1 DO >. SQLCODE=$$ KS^SQLOS(SQLHSTMT,X(I)) I SQLCODE'=0 G Error >S SQLCODE=$$ P^SQLOS(SQLHSTMT,X(N)) Note: If you perform your own split logic, make sure you adhere to all of the rules observed by the SPLIT^SQLKI subroutine. SQLAllocConnect 42
47 Programming Considerations Allocates a connection handle. Arguments Environment handle [SQLHENV] Returns Return code [SQLCODE] Connection handle [SQLHDBC] Syntax SQLCODE=$$AC^SQLOS(SQLHENV,.SQLHDBC) Example S SQLCODE=$$AC^SQLOS(SQLHENV,.SQLHDBC) I SQLCODE'=0 D Error Q Notes This function requires a valid environment handle (SQLHENV). A valid connection handle (SQLHDBC) is returned by the function. You need a connection handle to store information about the connection. A connection can contain multiple statement handles. SQLAllocEnv Allocates an environment handle. Arguments None Returns Ret urn code [SQLCODE] Environment handle [SQLHENV] Syntax SQLCODE=$$AE^SQLOS(.SQLHENV) Example S SQLCODE=$$AE^SQLOS(.SQLHENV) I SQLCODE'=0 D Error Q Notes A valid environment handle (SQLHENV) is returned by the function. You need an environment handle to store information about the environment. An environment can contain multiple connection handles. SQLAllocStmt Allocates a statement handle. Arguments Connection handle [SQLHDBC] Returns Return code [SQLCODE] Statement handle [ SQLHSTMT] Syntax SQLCODE=$$AS^SQLOS(SQLHDBC,.SQLHSTMT) Example 43
48 KBSODBCDriver S SQLCODE=$$AS^SQLOS(SQLHDBC,.SQLHSTMT) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function requires a valid connection handle (SQLHDBC). A valid statement handle (SQLHSTMT) is returned by the function. You need a statement handle to prepare and execute an SQL command. SQLBindCol Binds a select expression to a host variable. Arguments Statement handle [SQLHSTMT] Colum n sequence [SQLCOL] Colum n name [NAME] Returns Return code [SQLCODE] Syntax SQLCODE= $$BC^SQLOS(SQLHSTMT,SQLCOL,NAME) Example S SQLCODE=$$BC^SQLOS(SQLHSTMT,2,"CNAME") I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function cannot occur prior to statement preparation. The SQLFetch function places data into the host variable. If a column sequence is 0, all columns in the array are bound by the name parameter and sequenced by the actual column number. Consider $$BC^SQLOS(SQLHSTMT, 0, "XYZ"). Each fetch operation returns the local array XYZ populated with all columns from the result set. For example, SELECT NAME, SEX, DOB FROM PATIENT yields: XYZ(1) = name XYZ(2) = sex XYZ(3) = dob SQLBindParameter Declares the data type for a parameter. Arguments Statement handle [SQLHSTMT] Parameter sequence [SEQ] ODBC data type [TYPE] Returns Return code [SQLCODE] Syntax 44
49 Programming Considerations SQLCODE=$$BP^SQLOS(SQLHSTMT,SEQ,TYPE) Example S SQLCODE=$$BP^SQLOS(SQLHSTMT,1,1) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function is equivalent to the SQLSetParam function from ODBC V1.0. The data type is the numeric value of the ODBC data type. Run the on-line query SQL_API_DATATYPE to generate a list of supported data types. SQLCancel Cancels a statement. Arguments Statement handle [SQLHSTMT] Returns Return code [SQLCODE] Syntax SQLCODE=$$CS^SQLOS(SQLHSTMT) Example S SQLCODE=$$CS^SQLOS(SQLHSTMT) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function is primarily useful when asynchronous processing is enabled. SQLColAttributes Returns information on a particular feature of a column. Arguments Statement handle [SQLHSTMT] Column sequence [SQLCOL] Descriptor type [SQLDESC] Returns Return code [SQLCODE] Descriptor value [VALUE] Syntax SQLCODE=$$CA^SQLOS(SQLHSTMT,SQLCOL,SQLDESC,.VALUE) Example S SQLCODE=$$CA^SQLOS(SQLHSTMT,3,1,.NAME) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function provides more information than SQLDescribeCol. See SQLColAttributes Descriptor SQL_COLUMN_COUNT Code 0 45
50 KBSODBCDriver SQL_COLUMN_NAME 1. SQL_COLUMN_TYPE 2. SQL_COLUMN_LENGTH 3. SQL_COLUMN_PRECISION 4. SQL_COLUMN_SCALE SQL_COLUMN_DISPLAY_SIZE SQL_COLUMN_UNSIGNED 8 SQL_COLUMN_MONEY 9 SQL_ COLUMN_UPDATABLE 10 SQL_COLUMN_AUTO_INCREMENT 11 SQL_COLUMN_CASE_SENSITIVE SQL_COLUMN_SEARCHABLE SQL_COLUMN_TYPE_NAME SQL_COLUMN_TABLE_NAME 15 SQL_COLUMN_OWNER_NAME 16 SQL_ COLUMN_QUALIFIER_NAME 17 SQL_ COLUMN_COLUMN_LABEL 18 SQLColumnPrivileges SQLColumnPrivileges returns a list of columns and associated privileges for the specified table. Note: This function is implemented but not yet supported. Arguments Statement handle [SQLHSTMT] TableQualifier [QUAL] TableOwner [OWNER] TableName [TABLE] ColumnName [COLUMN] Returns Return code [SQLCO DE] Syntax S SQLCODE=$$CM^SQLOS(SQLHSTMT,QUAL,OWNER,TABLE,COLUMN) Notes 46
51 Programming Considerations The ColumnName argument accepts a search pattern. This function will return an empty result set until the product supports columnlevel privileges within the KB_SQL Engine. SQLColumns R eturns the list of column names in specified tables. Arguments Statement handle [SQLHSTMT] Table qualifier [QUAL] Table owner [ OWNER] Table name [TABLE] Column name [COLUMN] Returns Return code [SQLCODE] Syntax SQLCODE=$$CM^SQLOS(SQLHSTMT,QUAL,OWNER,TABLE,COLUMN) Example S SQLCODE=$$CM^SQLOS(SQLHSTMT,"","SQL_TEST","EMPLOYEES","%" ) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes SQLColumns does not return columns for an index table. Use the SQLStatistics function to return the columns of an index table. This function returns a result set (see the next page) that can be processed like any other query result. SQLConnect Connects to KB_SQL server. Arguments Data source name [SQLDATAS] User name [SQLUNAME] Authorization [SQLUAUTH] Returns Return code [SQLCODE] Connection handle [SQLHDBC] Syntax SQLCODE=$$C^SQLOS(SQLDATAS,SQLUNAME,SQLUAUTH,.SQLHDBC) Example S SQLCODE=$$C^SQLOS("M","DBA","SHARK",.SQLHDBC) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes 47
52 KBSODBCDriver The data source name parameter is not currently validated by the Server API. If you are using the API for M, set the data source name parameter to "M". If you are using the API for C, the data source name parameter takes the value of the entry in the ODBC.INI configuration file. SQLDescribeCol Gets basic metadata on a column. Arguments Statement handle [SQLHSTMT] Column sequence [SQLCOL] Returns Return code [SQLCODE] Column name [NAME] ODBC data type [TYPE] Precision [PRECISION] Scale [SCALE] Nullable [ NULLABLE] Syntax SQLCODE=$$ DC^SQLOS(SQLHSTMT,SQLCOL,.NAME,.TYPE,.PREC,.SCALE,.NULLABLE) Example S COL=3 S SQLCODE=$$DCSQLOS(SQLHSTMT,COL,.NAME,.TYPE,.PREC,.SCALE,.NUL LABLE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example uses the variable COL to get column data dictionary information for the third column in the result set. Note that COL is a number where 1 <= COL <= NumResultCols. This function is an easier form of the more complete SQLColAttributes function. SQLDescribeParam SQLDescribeParam returns the description of a parameter marker associated with a prepared SQL statement. Arguments Statement handle [SQLHSTMT] Parameter sequence [PARSEQ] SqlType [TYPE] Precision [PREC] Scale [SCALE] Nullable [NULLABLE] SQL_ NO_NULLS(0) The parameter does not allow NULL values. (This is the default value). SQL_NULLABLE(1) 48
53 Programming Considerations The parameter allows NULL values. SQL_ NULLABLE_UNKNOWN(2) The driver cannot determine if the parameter allows NULL values. Syntax S SQLCODE=$$DP^SQLOS(SQLHSTMT,PARSEQ,.TYPE,.PREC,.SCALE,.NULLABLE) SQLDisconnect Disconnects from KB_SQL Server. Arguments Connection handle [SQLHDBC] Returns Return code [SQLCODE] Syntax SQLCODE=$$D^SQLOS(SQLHDBC) Example DISCON S SQLCODE=$$D^SQLOS(SQLHDBC) I SQLCODE'=0 D Error Notes All connection statement handles are dropped. In the KB_SQL API for C, this function causes a network disconnect. SQLError Returns error information. Arguments Connection handle [SQLHDBC] Statement handle [SQLHSTMT] Returns Return code [SQLCODE] Sqlstate [SQLSTATE] Native code [SQLNC] Native error text [SQLNT] Syntax SQLCODE=$$ER^SQLOS(SQLHDBC,SQLHSTMT,.SQLSTATE,.SQLNC,.SQLN T) Example ER ; SQLError 3. I SQLCODE=99!(SQLCODE=100) Q 49
54 KBSODBCDriver W!,"SQLCODE= ",SQLCODE,! N SQLCODE,K65,ERS,ERC,ERT I '$G(SQLHDBC) S SQLHDBC=0 I '$G(SQLHSTMT) S SQLHSTMT=0 4. S SQLCODE=$$ER^SQLOS(SQLHDBC,SQLHSTMT,.ERS,.ERC,.ERT) I SQLCODE<0 Q I SQLCODE=100 Q W "SQLSTATE= ",ERS I ERS="" G 5 S K65=$O(^SQL(65,-1,ERS,0)) W " ",^SQL(65,K65,2) 5. W!,"Error Code= ",ERC,!,"Error Text= ", ERT,! G 4 6. Q SQLExecDirect Prepares and executes an SQL command. Arguments Statement handle [SQLHSTMT] SQL command [SQLTEXT] Returns Ret urn code [SQLCODE] Synta x SQLCODE=$$ED^SQLOS(SQLHSTMT,SQLTEXT) Example S SQLCODE=$$ED^SQLOS(SQLHSTMT,"SELECT * FROM SQL_TEST.EMPLOYEES") I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function can be used in place of SQLPrepare and SQLExecute. SQLExecute Executes a previously prepared SQL command. Arguments Statement handle [SQLHSTMT] Returns Return code [SQLCODE] Syntax SQLCODE=$$E^SQLOS(SQLHSTMT) Example S SQLCODE=$$E^SQLOS(SQLHSTMT) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes 50
55 Programming Considerations If your query includes parameters, the SQLExecute function can return "SQLCODE=99," which indicates that data needs to be provided for parameters. At this point, you would invoke SQLPutData until SQLCODE is not equal to 99. Refer to the illustration in the Error Processing section earlier in this chapter. SQLFetch Advances the cursor position for a statement. Arguments Statement handle [SQLHSTMT] Returns Return code [SQLCODE] Syntax SQLCODE= $$F^SQLOS(SQLHSTMT) Example 1. S SQLCODE=$$F^SQLOS(SQLHSTMT) I SQLCODE'=0 D Error G:SQLCODE<0 Discon I SQLCODE=100 G 2... G Notes This function automatically populates all bound columns for each row. SQLForeignKeys SQLForeignKeys can return: A list of foreign keys in the specified table (columns in the specified table that refer to primary keys in other tables). A list of foreign keys in other tables that refer to the primary key in the specified table. Arguments Statement handle [SQLHSTMT] PkTableQualifier [PKQUAL] PkTableOwner [PKOWNER] PkTableName [PKTABLE] 51
56 KBSODBCDriver FkTableQualifier [FKQUAL] FkTableOwner [FKOWNER] FkTableName [FKTABLE] Syntax S SQLCODE=$$FK^SQLOS(SQLHSTMT,PKQUAL,PKOWNER,PKTABLE, FKQUAL,FKOWNER,FKTABLE) Notes If PkTableName contains a table name, SQLForeignKeys returns a result set containing the primary key of the specified table and all of the foreign keys that refer to it. The result set is ordered by PKTABLE_QUALIFIER, PKTABLE_OWNER, PKTABLE_NAME, and KEY_SEQ. Example: To obtain a list of foreign keys that refer to the PATIENT table. S SQLCODE=$$FK^SQLOS(SQLHSTMT,,, PATIENT,,, ) If FkTableName contains a table name, SQLForeignKeys returns a result set containing all of the foreign keys in the specified table and the primary keys (in other tables) to which they refer. The result set is ordered by FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME, and KEY_SEQ. Example: To obtain a list of foreign keys stored in the PATIENT table. S SQLCODE=$$FK^SQLOS(SQLHSTMT,,,,,, PATIENT ) If both PkTableName and FkTableName contain table names, SQLForeignKeys returns the foreign keys in the table specified in FkTableName that refer to the primary key of the table specified in PkTableName. Example: To obtain a list of the one foreign key that joins the PATIENT and VISIT tables. S SQLCODE=$$FK^SQLOS(SQLHSTMT,,, PATIENT,,, VISIT ) Result Set Column Name Description PKTABLE_QUALIFIER Primary key table qualifier identifier. PKTABLE_OWNER Primary key table owner identifier. PKTABLE_NAME Primary key table identifier. PKCOLUMN_NAME Primary key column identifier. FKTABLE_QUALIFIER Foreign key table qualifier identifier. FKTABLE_OWNER Foreign key table owner identifier. FKTABLE_NAME Foreign key table identifier. FKCOLUMN_NAME Foreign key column identifier. KEY_SEQ Column sequence number in key (starting with 1). UPDATE_RULE Action to be applied to the foreign key on UPDATE. 52
57 Programming Considerations DELETE_RULE FK_NAME PK_NAME Related Functions Sample routine SQLJ16. SQLFreeConnect SQL_CASCADE SQL_RESTRICT SQL_SET_NULL NULL Action to be applied to the foreign key on DELETE. SQL_CASCADE SQL_RESTRICT SQL_SET_NULL NULL if not applicable Foreign key identifier. Primary key identifier. Frees the connection handle and all associated statement handles. Arguments Connection handle [SQLHDBC] Returns Return code [SQLCODE] Syntax SQLCODE=$$FC^SQLOS(SQLHDBC) Example S SQLCODE=$$FC^SQLOS(SQLHDBC) I SQLCODE'=0 D Error Q Note This function effectively closes all active statements and drops the connection. SQLFreeEnv Frees the environment handle and all associated connection and statement handles. Arguments Environment handle [ SQLHENV] Returns Return code [SQLCODE] Syntax SQLCODE=$$FE^SQLOS(SQLHENV) Example S SQLCODE=$$FE^SQLOS(SQLHENV) I SQLCODE'=0 D Error Q Notes 53
58 KBSODBCDriver This function effectively closes all active statements and active connections and drops the environment. SQLFreeStmt Stops processing of a statement, closes any open cursors associated with that statement, and discards results. Arguments Statement handle [SQLHSTMT] Option [SQLTYPE] Returns Return code [SQLCODE] Syntax SQLCODE=$$FS^SQLOS(SQLHSTMT,SQLTYPE) Example S SQLCODE=$$FS^SQLOS(SQLHSTMT,1) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Options SQLFreeStmt Option Code SQL_CLOSE 0 SQL_ DROP 1. SQL_UNBIND 2. SQL_RESET_PARAMS 3. SQLGetConnectOption Returns the current setting of a connection option. Arguments Connection handle [SQLHDBC] Option type [TYPE] Returns Return code [SQLCODE] Option value [VALUE] Syntax SQLCODE=$$GCO^SQLOS(SQLHDBC,TYPE,.VALUE) Example S OPTION=101 S SQLCODE=$$GCO^SQLOS(SQLHDBC,OPTION,.VALUE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes 54 The example uses the variable OPTION to get information about the SQL_ACCESS_MODE state for the connection referenced by the variable SQLHDBC.
59 Programming Considerations See SQLSetConnectOption for a list of statement options for this function. Run SQL_API_CONNECT_OPTION to generate a list of connection options. SQLGetCursorName Returns the name of a cursor associated with a statement. Arguments Statement handle [SQLHSTMT] Returns Return code [SQLCODE] Cursor name [NAME] Syntax SQLCODE=$$GCN^SQLOS(SQLHSTMT,.NAME) Example S SQLCODE=$$GCN^SQLOS(SQLHSTMT,.NAME) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The only statements that use a cursor name are the positioned UPDATE and DELETE (for example, UPDATE table-name...where CURRENT OF cursorthe application does not call SQLSetCursorName, the SQL engine allocates a name). If default cursor name. This function returns the name of a cursor regardless of whether it was created explicitly or implicitly. SQLGetData Return s a specific column value from a statement cursor. Arguments Statement handle [SQLHSTMT] Colum n sequence [SQLCOL] Returns Return code [SQLCODE] Column value [VALUE] Syntax SQLCODE=$$GD^SQLOS(SQLHSTMT,SQLCOL,.VALUE) Example S SEQ=3 S SQLCODE=$$GD^SQLOS(SQLHSTMT,SEQ,.VALUE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example gets the value of the result set s third column, (SEQ), for the statement referenced by the variable SQLHSTMT. Note that SEQ is a number where 1<= SEQ <= NumResultCols. See also SQLBindCol. We recommend SQLFetch for better performance. 55
60 KBSODBCDriver SQLGetInfo Returns general information about the driver and data source. Arguments Connection handle [SQLHDBC] Info type [TYPE] Returns Return code [SQLCODE] Info value [VALUE] Synta x SQLCODE=$$GI^SQLOS(SQLHDBC,TYPE,.VALUE) Example S SQLCODE=$$GI^SQLOS(SQLHDBC,TYPE,.VALUE) I SQLCODE'= 0 D Error G:SQLCODE<0 Discon Notes Run the on-line query, SQL_API_INFO_OPTION, to generate a list of the SQLGetInfo options and their respective codes. See sample routine SQLJ10 for an illustration of how to use SQLGetInfo. The ODBC specification reserves the range of for information types. KBS reserves values greater than 1000 for data source specific information. A returned value is always a simple string of numbers or characters. A bitmask requires special handling. Two subroutines, UNMASK ^SQLK4 and MASK^SQLK4, are provided to assist in this process. For example, suppose you receive a BitMask value of The following code demonstrates the effect of the two subroutines: ; Convert Number to BitString S X=65535 D MASK^SQLK4 W X ; Returns " " ; Convert BitString to Number S X=" " D UNMASK^SQLK4 W X ; Returns SQLGetStmtOption Returns the current settings of a statement option. Arguments Statement handle [SQLHSTMT] Statement option [OPTION] Returns Return code [SQLCODE] Option value [VALUE] 56
61 Programming Considerations Synta x SQLCODE=$$GSO^SQLOS(SQLHSTMT,OPTION,.VALUE) Example S TYPE=0 S SQLCODE=$$GSO^SQLOS(SQLHSTMT,TYPE,.VALUE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example uses the variable TYPE to get information about the statement option for the statement referenced by the variable SQLHSTMT. For a list of valid statement options, run the on-line query SQL_API_STATEMENT_OPTION or see the SQLSetStmtOption function. SQLGetTypeInfo Returns information on supported data types. Arguments Statement handle [SQLHSTMT] ODBC data type [TYPE] Returns Return code [SQLCODE] Synta x SQLCODE=$$GTI^SQLOS(SQLHSTMT,TYPE) Example S TYPE=-7 S SQLCODE=$$GTI^SQLOS(SQLHSTMT,TYPE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example produces a re sult set of information about the SQL_BIT(FLAG) data type. If the TYPE variable is zero (0), the result set contains information about all supported types. Otherwise, the result set is specific to the one type referenced by the TYPE variable. Run the on-line query, SQL_API_DATATYPE, to generate a list of supported data types. See sample routine SQLJ6 for a demonstration of SQLGetTypeInfo. SQLMoreResults SQLMoreResults determines whether there are more results available on an hstmt containing SELECT, UPDATE, INSERT, or DELETE statements and, if so, initializes processing for those results. Arguments Statement handle [SQLHSTMT] Syntax S SQLCODE=$$MR^SQLOS(SQLHSTMT) 57
62 KBSODBCDriver Notes UPDATE, INSERT, and DELETE statements return a count of affected rows. If any of these statements are batched, submitted with arrays of parameters, or in procedures, they can return multiple result sets or counts. If another result set or count is available, SQLMoreResults returns SQL_SUCCESS and initializes the result set or count for additional processing. After calling SQLMoreResults for SELECT statements, an application can call functions to determine the characteristics of the result set and to retrieve data from the result set. After calling SQLMoreResults for UPDATE, INSERT, or DELETE statements, an application can call SQLRowCount. If all results have been processed, SQLMoreResults returns SQL_NO_DATA_FOUND. Note that if there is a current result set with unfetched rows, SQLMoreResults discards that result set and makes the next result set or count available. If a batch of statements or a procedure mixes other SQL statements with SELECT, UPDATE, INSERT, and DELETE statements, these other statements do not affect SQLMoreResults. SQLNativeSql SQLNativeSql returns the SQL command text as translated by the server. Arguments Connection handle [SQLHDBC] LinesIn [IN] ArrayIn [XIN] LinesOut [OUT] ArrayOut [XOUT] Syntax S SQLCODE=$$NS^SQLOS(SQLHDBC,IN,XIN,.OUT,XOUT) Notes The SQLNativeSql function returns the SQL command text after it has been processed to handle ODBC escape clauses and string literal quoting. A summary of the conversions is listed below. {fn function(parmlist)} SQL_function(parmlist) {fn lower(name)} => SQL_lower(Name) {d date-literal} date-literal {d ' '} => ' ' {t time-literal} time-literal {t '22: 30:15'} => '22: 30:15' 58
63 Programming Considerations {ts timestamp-literal} timestamp-literal {ts ' :30:15'} => ' :30:15' {call procedure(parmlist)} call procedure(parmlist) {call DeptEmps(? )} => call DeptEmps(?) DoubleQuote in SingleQuoted Literal 'hello "there" world' => 'hello ""there"" world' SingleQuote in DoubleQuoted Literal "hello 'there' world" => "hello ''there'' world" SoftTag in Literal 'hello {*there} world' => ('hello ' chr(123,42) 'there} world') Related Functions Sample routine SQLJ21. Example Enter SQL Command (or 'GO' to execute) -->Select {fn lcase(name)}, {fn soundex(name)} -->From Employees -->Where {fn floor(salary)} > 10 -->go SQL Statement converted to native syntax Select SQL_fn_lcase(name), SQL_ fn_soundex(name) From Employees Where SQL_fn_floor(salary) > 10 SQLNumParams SQLNumParams returns the number of parameters in an SQL statement. Arguments Statement handle [SQLHSTMT] numparams [NPM] Syntax S SQLCODE=$$NP^SQLOS(SQLHSTMT,.NPM) Notes SQLNumParams can be called only after SQLPrepare has been called. If the statement associated with hstmt does not contain parameters, SQLNumParams sets numparams to 0. Related Functions 59
64 KBSODBCDriver Sample routine SQLJ21. SQLDescribeParam API function. SQLNumResultCols Returns the number of columns in a table. Arguments Statement handle [SQLHSTMT] Returns Ret urn code [SQLCODE] Number of columns [COLS] Syntax SQLCODE=$$NRC^SQLOS(SQLHSTMT,.COLS) Example S SQLCODE=$$NRC^SQLOS(SQLHSTMT,.NRC) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example uses the NRC variable to return the number of result columns in the statement referenced by the SQLHSTMT variable. Note that the statement must be prepared prior to execution of this function, otherwise an error will result. SQLPrepare Prepares an SQL command for execution. Arguments Statement handle [SQLHSTMT] SQL command [SQLTEXT] Returns Return code [SQLCODE] Syntax SQLCODE=$$P^SQLOS(SQLHSTMT,SQLTEXT) Example S SQLCODE=$$P^SQLOS(SQLHSTMT,"SELECT * FROM SQL_TEST.EMPLOYEES") I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes If the SQL command is too long (greater than 255 bytes) to be prepared all at once, use KBSStatement. SQLPrimaryKeys SQLPrimaryKeys returns the column names that comprise the primary key for a table. Arguments Statement handle [SQLHSTMT] 60
65 Programming Considerations TableQualifier [QUAL] TableOwner [OWNER] TableName [TABLE] Syntax S SQLCODE=$$PK^SQLOS(SQLHSTMT,QUAL,OWNER,TABLE) Notes SQLPrimaryKeys returns the results as a standard result set, ordered by TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME, and KEY_SEQ. SQLProcedureColumns SQLProcedureColumns returns the list of input and output parameters, as well as the columns that make up the result set for the specified procedures. Arguments Statement handle [SQLHST MT] ProcQualifier [QUAL] ProcOwner [OWNER] ProcName [PROC] ColumnName [COLUMN] Syntax S SQLCODE=$$PC^SQLOS(SQLHSTMT,QUAL,OWNER,PROC,COLUMN) Notes This function is typically used before statement execution to retrieve information about procedure parameters and columns from the system catalog. T he procedure query must be compiled in order for the procedure to be recognized. The ProcOwner, ProcName, and ColumnName arguments accept wildcard search patterns. SQLProcedures SQLProcedures returns the list of procedure names stored in a specific data source. Procedure is a generic term used to describe an executable object, or a named entity that can be invoked using input and output parameters, and which can return result sets similar to the results returned by SQL SELECT expressions. Arguments Statement handle [SQLHSTMT] ProcQualifier [QUAL] ProcOwner [OWNER] ProcName [PROC] Syntax S SQLCODE=$$PR^SQLOS(SQLHSTMT,QUAL,OWNER,PROC) 61
66 KBSODBCDriver Notes SQLProcedures lists all procedures in the requested range. A user may or may not have permission to execute any of these procedures. To check accessibility, an application can call SQLGetInfo and check the SQL_ACCESSIBLE_PROCEDURES information value. Otherwise, the application must be able to handle a situation where the user selects a procedure which it cannot execute. The procedure query must be compiled in order for the procedure to be recognized. The ProcOwner and ProcName arguments accept wildcard search patterns. SQLPutData Specifies the execut ion time value for a parameter. Arguments Statement handle [SQLHSTMT] Parameter value [VALUE] Parameter sequence [SEQ] Returns Return code [SQLCODE] Syntax SQLCODE=$$PD^SQLOS(SQLHSTMT,VALUE,SEQ) Example S SQLCODE=$$ PD^SQLOS(SQLHSTMT,"9.00",2) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes In the case of date, time, timestamp, and bit, the value parameter is in the external format used by ODBC. For example, a date parameter is specified as " " as opposed to the internal format for M dates. Note that the SQL_BIT type is mapped to the KBS FLAG data type. SQLRowCount Returns the number of rows from a result set. Arguments Statement handle [SQLHSTMT] Returns Return code [SQLCODE] Number of rows [ROWS] Syntax SQLCODE=$$RC^SQLOS(SQLHSTMT,.ROWS) Example S SQLCODE=$$RC^SQLOS(SQLHSTMT,.ROWS) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes 62
67 Programming Considerations This function is designed for use with INSERT, UPDATE, and DELETE queries. It returns the number of rows affected by the query. For a SELECT query, this function returns the current row number. SQLSetConnectOption Sets options that govern aspects of connections. Arguments Connection handle [SQLHDBC] Option type [TYPE] Option value [VALUE] Returns Return code [SQLCODE] Syntax SQLCODE=$$SCO^SQLOS(SQLHDBC,TYPE,VALUE) Example S TYPE=101,VALUE=1 S SQLCODE=$$SCO^SQLOS(SQLHDBC,TYPE,VALUE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example uses the variable TYPE to set the value SQL_ACCESS_MODE option to read only for the connection referenced by the variable SQLHDBC. Run the on-line query SQL_API_CONNECT_OPTION to generate a list of connection options. See the accompanying table on the next page for a list of this function s statement options and their respective codes. Options SQLSetConnectOption Option Code SQL_ACCESS_MODE 101 SQL_AUTOCOMMIT 102 SQL_LOGIN_TIMEOUT 103 SQL_OPT_TRACE 104 SQL_OPT_TRACEFILE 105 SQL_TRANSLATE_DLL 106 SQL_TRANSLATE_OPTION 107 SQL_TXN_ISOLATIO N 108 SQL_CURRENT_QUALI FIER 109 SQL_ODBC_CURSORS 110 SQL_QUIET_MODE 111 SQL_PACKET_SIZE 112 SQL_CONNECT_OPT_D RVR_START
68 KBSODBCDriver SQLSetCursorName Specifies the name of a cursor for a statement. Arguments Statement handle [SQLHSTMT] Cursor name [NAME] Returns Return code [SQLCODE] Syntax SQLCODE=$$SCN^SQLOS(SQLHSTMT,NAME) Example S SQLCODE= $$SCN^SQLOS(SQLHSTMT,NAME) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes All cursor names within the connection must be unique. The only statements that use a cursor name are the positioned UPDATE and DELETE (for example, UPDATE table-name...where CURRENT OF cursorname). If the application does not call SQLSetCursorName, the SQL engine allocates a default cursor name. This function returns the name of a cursor regardless of whether it was created explicitly or implicitly. SQLSetStmtOption Sets options related to statement handle. Arguments Statement handle [SQLHSTMT] Statement option [OPTION] Option value [VALUE] Returns Return code [SQLCODE] Syntax SQLCODE=$$SSO^SQLOS(SQLHSTMT,OPTION,VALUE) Example S OPTION=0,VALUE=60 S SQLCODE=$$SSO^SQLOS(SQLHSTMT,OPTION,VALUE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example uses the variable OPTION to set the SQL_QUERY_TIMEOUT value for the statement referenced by the variable SQLHSTMT. For a list of valid statement options, run the on-line query SQL_API_STATEMENT_OPTION or see the table on the next page. 64
69 Programming Considerations Options SQLSetStmtOption Option Code SQL_QUERY_TIMEOUT 0 SQL_MAX_ROWS 1. SQL_NOSCAN 2. SQL_MAX_LENGTH 3. SQL_ASYNC_ENABLE 4. SQL_ BIND_TYPE 5. SQL_ CURSOR_TYPE 6. SQL_CONCURRENCY 7. SQL_KEYSET_SIZE 8. SQL_ROWSET_SIZE 9. SQL_SIMULATE_CURSOR 1. SQL_RETRIEVE_DATA 1. SQL_USE_BOOKMARKS 1. SQL_GET_BOOKMARK 1. SQL_ROW_NUMBER 1. SQLSpecialColumns Returns row identity and auto-updates columns. Arguments Statement handle [SQLHSTMT] Column type [COLTYPE] Table qualifier [QUAL] Table owner [OWNER] Table name [TABLE] Scope [SCOPE] Nullable [NULLABLE] Returns 65
70 KBSODBCDriver Return code [SQLCODE] Syntax SQLCODE=$$SC^SQLOS(SQLHSTMT,COLTYPE,QUAL,OWNER,TABLE,SCO PE,NULLABLE) Example S SQLCODE=$$SC^SQLOS(SQLHSTMT,1,"","SQL_TEST","CHARGES",0,0) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes This function returns the primary keys for the table. See the accompanying table on the next page for the result set. Result Set SQLSpecialColumns Column Col Seq SCOPE 1. COLUMN_NAME 2. DATA_TYPE 3. TYPE_NAME 4. PRECISION 5. LENGTH 6. SCALE 7. PSEUDO_COLUMN 8. SQLStatistics Returns the primary key for a base table and for an index tab le. Because the primary key is all the columns for an index table, you can use this function to get all the columns in an index table, but not all the columns in a base table. Arguments Statement handle [SQLHSTMT] Table qualifier [QUAL] Table owner [OWNER] Table name [TABLE] Unique [UNIQUE] Accuracy [ACCURACY] Returns Return code [SQLCODE] 66
71 Programming Considerations Syntax SQLCODE=$$SM^SQLOS(SQLHSTMT,QUAL,OWNER,TABLE,UNIQUE,ACC URACY) Example S SQLCODE=$$SM^SQLOS(SQLHSTMT, "","SQL_TEST","EMPLOYEES",1,1) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes See the accompanying table on the next page for the result set. Result Set SQLStatistics Column Col Seq TABLE_QUALIFIER 1. TABLE_OWNER 2. TABLE_NAME 3. NON_UNIQUE 4. INDEX_QUALIFIER 5. INDEX_NAME 6. TYPE 7. SEQ_IN_INDEX 8. COLUMN_NAME 9. COLLATION 1. CARDINALITY 1. PAGES 1. FILTER_CONDITION 1. SQLTablePrivileges SQLTablePrivileges returns a list of tables and the privileges associated with each table. Arguments Statement handle [SQLHSTMT] 67
72 KBSODBCDriver TableQualifier [QUAL] TableOwner [OWNER] TableName [TABLE] Notes The TableOwner and TableName arguments accept search patterns. For the DBA, privileges will appear for all grantees. For non-dba users, privileges will appear for your user group only. Result Set Column Name Description TABLE_QUALIFIER Table qualifier identifier. TABLE_OWNER Table owner identifier. TABLE_NAME Table identifier. GRANTOR User who granted the privilege. GRANTEE User to whom the privilege was granted. PRIVILEGE Identifies the table privilege. SELECT The grantee is permitted to retrieve data for one or more INSERT The grantee is permitted to in sert new rows containing UPDATE The grantee is permitted to update the data in one or DELETE The grantee is permitted to delete rows of data from the REFERENCES The grantee is permitted to refer to one or more columns of the table within a constraint (for example, a unique, referential, or table c heck constraint). The scope of action permitted the grantee by a given table privilege is data source-dependent. For example, the UPDATE privilege might permit the grantee to update all columns in a table on one data source and only those columns for which the grantor has the UPDATE privilege on another data source. IS_GRANTABLE Indicates whether the grantee is permitted to grant the privilege to other users: YES, NO, or NULL if unknown. Related Functions Sample routine SQLJ20. SQLTables Returns list of table names stored in a specific data source. The list includes only those tables accessible by the user who is currently logged in via the SQLConnect function. To get the complete list of tables you must log in as the DBA. Arguments Statement handle [SQLHSTMT] Table Qualifier [QUAL] 68
73 Programming Considerations Table Owner [OWNER] Table Name [TABLE] Table Type [TYPE] Returns Return code [SQLCODE] Syntax SQLCODE=$$TM^SQLOS(SQLHSTMT,QUAL,OWNER,TABLE,TYPE) Example ;List all Owners (schemas) S SQLCODE=$$TM^SQLOS(HSTMT,"","%","","") ;List Types S SQLCODE=$$TM^SQLOS(HSTMT,"","","","%") ;List Views S SQLCODE=$$TM^SQLOS(HSTMT,"","","%","VIEW") ;List Tables S SQLCODE=$$TM^SQLOS(HSTMT,"","","%","TABLE") ;List System Tables S SQLCODE=$$TM^SQLOS(HSTMT,"","","%","SYSTEM TABLE") Notes The table qualifier (QUAL) argument is supported, but its value must be null. You may use the subroutine WCPD^SQLK4 to pad or insert wildcards into an SQL_ IDENTIFIER. For example, assume the following SQL_IDENTIFIER is a valid table name. THIS_IS_MY_VALID_ TABLENAME The WCPD subroutine may be called to insert the wildcard escape character as illustrated below. >w X THIS_IS_MY_VALID_TABLENAME >D WCPD^SQLK4 /* After conversion */ >W X TH IS\_ IS\_MY\_VALID\_TABLENAME The result set of the function appears below. Result Set SQLTables Column Col Seq TABL E_QUALIFIER 1. TABL E_OWNER 2. TABL E_NAME 3. TABL E_TYPE 4. 69
74 KBSODBCDriver REMARKS 5. SQLTransact Commits or rolls back pending transactions. Arguments Connection handle [SQLHDBC] Commit or rollback [SQLTTYPE] Returns Return code [SQLCODE] Syntax SQLCODE=$$T^SQLOS(SQLHDBC,SQLTTYPE) Example S TTYPE=1 SQLCODE=$$T^SQLOS(SQLHDBC,TTYPE) I SQLCODE'=0 D Error G:SQLCODE<0 Discon Notes The example attempts to rollback the transaction for the connection. TTYPE can be zero (0) for commit, or one ( 1) for rollback. Users are encouraged to use this API call instead of the SQL COMMIT and ROLLBACK commands to commit or rollback pending transactions. Options SQLTransact Option Code COMMIT 0 ROLLBACK 1. ActiveX Data Objects (ADO) Overview of ADO Programming Programming using ADO with KB_SQL is just as it is for using ADO with any other SQL Data Source. See for more information. 70
75 Appendixes A - Escape Sequences Extensions SQL Extensions KB_SQL API supports several ODBC SQL extensions: the representation of date and time literals the syntax for scalar functions LIKE predicate escape characters stored procedures These extensions provide essential functionality that is shared by most DBMSs. However, because the syntax required by the DBMSs varies, ODBC uses a syntactical notation called the escape clause. The escape clause consists of a pair of curly braces {} which surround the standard SQL syntax form and a token which specifies the type of clau se. Date, Time, and TimeStamp Date, Time, and Timestamp Data KB_SQL API supports the DATE, TIME, and TIMESTAMP (a combined form of DATE and TIME) data types. The shorthand escape clause syntax for these data types is: {d 'value'} {d ' '} April 28, 1999 {t 'value'} {t '10:30:00'} 10:30 AM {ts 'value'} {ts ' :30:00'} April 28, 1999 at 10:30 AM Wildcards Wildcards (Search Pattern Escape Characters) ODBC supports wildcards using the underscore character (_) for single-character replacement and the percent sign (%) for multiple-character replacement. A word of caution is in order with respect to the use of wildcards, particularly in relation to the various catalog functions where the SQL_IDENTIFIER can include the underscore character. When you want to use a meta character as a literal and not as a wildcard, you must precede the meta character with the search pattern escape character (the default is the backward slash). 71
76 KBSODBCDriver For exa mple, to obtain all columns for the LAB_PATIENT table where the underscore is a literal in the SQL_IDENTIFIER, you send the table name parameter as: LA B\ _ PATIENT Using the escape character prevents the engine from interpreting the underscore as a wildcard, thus avoiding retrieving columns for tables that could be named LABaTABLE, LABbTABLE, and so forth. Scalar functions Scalar Functions Scalar ( or row) functions operate on a single value. They include functions that compute absolute value or length, format a date or time, or return a substring. The on-line query SQL_ FUNCTION_LIST provides a complete list of the KB_SQL API scalar functions and their syntax. Function Description SQL_ FN_ABS(numeric_exp) Returns absolute value SQL_FN_ASCII(string_exp) Returns the ASCII code value of the leftmost character SQL_FN_CEILING(numeric_exp) Returns smallest integer greater or equal to value SQL_FN_CHAR(code) Returns the character of the ASCII code SQL_FN_CONCAT(string_exp1, string_exp2) Concatenates two values using SQL rules SQL_FN_DAYNAME(date_exp) Returns day name SQL_FN_DAYOFMONTH(date_exp) Returns day of month based on date value SQL_FN_DAYOFWEEK(date_exp) Returns day of week (1=Sunday) SQL_FN_DAYOFYEAR( date_exp) Returns day of year SQL_FN_DIFFERENCE(string_exp1, string_exp2) Difference in Soundex codes SQL_FN_FLOOR(numeric_exp) Returns largest integer less than or equal to value SQL_FN_HOUR(time_exp) Returns hour for time value SQL_FN_IDENTIFIER( <value>) Formats an SQL_IDENTIFIER value SQL_FN_IFNULL(exp,value) Returns NULL or value SQL_FN_INITIAL_CAPS(Value) Format value using initial capitals SQL_FN_INSERT(string_exp1, start, length, string_exp2) Overwrite characters in 72
77 Appendixes string SQL_FN_LCASE(string_exp) Convert to lowercase SQL_FN_LEFT(string_exp, count) Returns the leftmost count of characters in string SQL_FN_LENGTH(string_exp) Number of characters in string less trailing blanks SQL_FN_LOCATE(exp1,exp2[,exp3]) Returns starting position of exp1 in exp2 SQL_FN_LTRIM(string_exp) Strip leading blanks SQL_FN_MINUTE(time_exp) Returns minute of hour SQL_FN_MOD(integer_exp1,integer_exp2) Returns remainder (modulus) of integer_exp1 divided by inte2 SQL_FN_MONTH(date_exp) Returns month based on date value SQL_FN_MONTHNAME(date_exp) Returns name of month SQL_FN_NEXT_MONTH_FIRST(<DateValue>) Returns the date value of next first of month SQL_FN_NEXT_MONTH_LAST Returns the date value of the next month end date SQL_FN_NEXT_WEEKDAY(< DateValue>) Returns the date value of the next weekday SQL_FN_NEXT_WEEKEND_DAY(<DateValue>) Returns date value of next weekend day SQL_FN_POWER(numeric_exp,integer_exp) Returns value raised to power SQL_FN_QUARTER(date_exp) Returns quarter (1-4) for date value SQL_FN_RAND(integer_exp) Returns random number using value as seed SQL_FN_REPEAT(string_exp, count) Repeat string n-times SQL_FN_REPLACE(string_exp1,string_exp2,string_exp3) Replace all occurrences of s2 in s1 with s3 SQL_FN_RIGHT(string_exp, count) Returns the rightmost count of characters from string SQL_FN_ROUND(numeric_exp,integer_exp) Returns value rounded to n- places to right of decimal SQL_FN_RTRIM(string_exp) Returns the characters of string with w/o trailing blanks SQL_FN_SECOND(time_exp) Returns seconds for time 73
78 KBSODBCDriver value SQL_FN_SIGN(numeric_exp) Returns -1 (neg), 0 (zero), or 1 (positive) SQL_FN_SOUNDEX(string_exp) Returns site-determined value of string SQL_FN_SPACE(count) Returns string of n-spaces SQL_FN_SQRT(float_exp) Returns the square root of value SQL_FN_SUBSTRING(string_exp,start,length) Returns sub-component of string value SQL_FN_TIMESTAMPADD( Add interval to timestamp interval, integer_exp,timestamp_exp) SQL_FN_TIMESTAMPDIFF( Returns integer number of interval, intervals between m1 and timestamp_exp1,timestamp_exp2) m2 SQL_FN_TIMESTAMPPART(<Part>,<TimeStamp>) Returns a specified part of a timestamp SQL_FN_TRUNCA TE(numeric_exp,integer_exp) Truncates numeric value SQL_FN_UCASE(string_exp) Converts all lowercase characters to uppercase SQL_FN_WEEK( date_exp) Returns week of year based on date value SQL_FN_YEAR(date_exp) Returns year of date value LIKE Predicate LIKE Predicate Escape Characters The support of the LIKE predicate escape clause allows for searches to include metacharacters. In a LIKE predicate, the underscore character (_) is used for single- replacement and the percent sign (%) is used for multiple-character character replacement. The percent and underscore characters can be used as literals in a LIKE predicate by preceding them with an escape character. The escape clause for ODBC queries looks like: {escape escape-character } Example {escape \ } Example Items aab aac aad aazz aa_123 aa_245 abc ade 74
79 Appendixes SQL without escape character select code from item_master where code like aa_% Returns aab aac aad aazz aa_123 aa_245 SQL with esc ape character select code from item_master where code l ike aa\_% Returns aa_123 aa_245 Notes The default LIKE escape character is '\' (backslash). The escape character can be specified using the escape clause syntax: {escape '\'}. The SQL Editor supports the feature, but does not use the {} syntax. ODBC Exam ple select code from item_master where code l ike aa\_% {escape \ } SQL Editor Example select code from item_master where code l ike aa\_% escape \ Procedure C alls The KB_SQL Server API supports the use of stored procedures as a collection of precompiled SQL statements residing on the server. An application can call a procedure in place of an SQL statement. KB_SQL suppo rts temporary and permanent stored procedures. A temporary stored procedure is stored in the cache of recent SQL commands on the server. A permanent stored procedure is stored as a query definition on the server. Stored procedu res can improve performance by eliminating query compilation at runtime. Permanent stored procedures can simplify application development, as most changes to procedures are isolated on the server. Procedures can return a result set (1 or more columns, 1 or more rows) Procedur es can perform DML, DCL, and DDL operations, returning no result set. 75
80 KBSODBCDriver Ou ter Joins The KB_SQL Outer Join syntax is proprietary to KBS. For generic applications, use of this syntax w ould compromise the portability of the application. To avoid this limitation, generic applications use the ODBC escape clause to encapsulate the outer join syntax, allowing the specific driver to translate into a native syntax where necessary. This is exactly what KB_SQL does. ODBC uses e scape sequences for outer joins. The syntax of this escape sequence is as follows: {oj outer-join} where outer-join is: table-reference {LEFT R IGHT FULL} OUTER JOIN {table-reference outer-join} ON search-condition Note that any terms in {braces} indicate that only one of the terms would appear in a phrase. For example, an outer join would be characterized as one of LEFT, RIGHT, or FULL. Note also that the outer-join term can be included as part of the outer-join specification. Althoug h the nesting of o uter joins might be a desired feature, KB_SQL does not currently sup port this capability as of 10/18/2001. B - Connection Options Connection options The ODBC interface allow s some flexibility in the ways in which a client application can achieve a connection to a server-based data source. The choice of option is sometimes left to the applica tion such as the case of Microsoft Office products. Other situations give the developer the choice of connection strategy. These strategies are basically trading off of several conside rations, including: Control over appearance of dialogs in your application. If you are building a custom application, you will want to control the dialogs that are presented to your customers. At a minimum, his translates to using SQLConnect and NOT using SQLDriverConnect. Whether or not you require a pre-configured data source to define the parameters o f the con nection. If you are building a custom application, you might want total control over the connection parameters. You can accomplish this by controlling the creation of the data source. You can also control this by putting the connection parameter value information in the applica tion code and connecting without a pre-defined data source. See File Data Sources and DSN-less Connections. 76
81 Appendixes When using a commercial application, your options are limited to the choices m ade by the developers. Sometimes this means that you are forced to create a certain type of connection and certain connection strategies are not available. When evaluating a new ODBC-enabled application, it is valuable to review the connection options that are supported. SQLConnect SQLConnect is the simplest connection function. It requires a data source name and accepts an option al user ID and password. It works well for applications that hard-code a data source n ame and do not require a user ID or password. It also works well for applications that want to control their own look and feel, or that have no user interface. Such applications can build a list of data sources using SQLDataSources; prompt the user for data source, user ID, and password; and then call SQLConnect. The SQLCon nect function establishes connections to a driver and a data source. The connection handle references storage of all information about the connection to the data source, inclu ding status, transaction state, and error information. It requires the fol lowing: A valid co nnection handle (hdbc). A valid KB_SQL username. A valid KB_SQL password. Connecting from a C program. /* Connect to data source */ rc = SQLConnect(hdbc, // hdbc is the connection handle (SQLCH AR*) " Sales", SQL_NTS, // Sales is the DataSourceName (SQLCH AR*) " DBA", SQL_NTS, // DBA is the username (SQLCH AR*) " SHARK ", SQL_NTS); // SHARK is the password Connection from a M program. S rc=$$ C^SQLO S("M", "DBA", "SHARK", hdbc) // M is the DataSourceName // DBA is the username // SHAR K is the password // hdbc is the connection handle See SQLAllocConnect for information on connection handles. Note tha t the values of "Sales", "DBA", and "SHARK" are used for illustrative purposes only. SQLDriverConnect SQLDriverConnect is used to connect to a data source using a connection string. SQLDriverConnect is used instead of SQLConnect for the following reasons: 77
82 KBSODBCDriver To le t the application use driver-specific connection information. To reques t that the driver prompt the user for connection information. To connect without specifying a data source. SQLDriverConnect is an alternative to SQLConnect. It supports data sources that require more connection information than the three arguments in SQLConnect, dialog boxes to prompt the user for all connection information, and data sources that are not defined in the system information. SQLDriverConnect provides the following connection attributes: Establish a connection using a connection string that contains the data source name, one or more user IDs, one or more passwords, and other information required by the data source. Establish a connection using a partial connection string or no additional information; in this case, the Driver Manager and the driver can each prompt the user for connection information. Establish a connection to a data source that is not defined in the system info rmation. If the application supplies a partial connection string, the driver can prompt the user for connection information. See DSN-Less Connections. Establish a connection to a data source using a connection string constructed from the information in a.dsn file. See File Data Sources. After a connection is established, SQL DriverConnect returns the completed connection string. The application can use this string for subsequent connection requests. For more information, see the Microsoft ODBC documentation. Note that the SQLDriverConnect function is not available in the M-based interface. For connections from M programs, use the SQLConnect function. DSN-less Connections If you are using ODBC 3.0 and a connection without DSN, or a file DSN, to connect to your server, you can set the additional connection properties supported by the driver. Connection Parameters UID=UserName PWD=PassWord Driver=KB_SQL ODBC 32-bit Driver Host=ServerAddress TCP_PORT=ServerListeningPort Connection Example // DsnLessConnect.cpp #include "stdafx.h" #include <windows.h> #include <sqlext.h> int main() { 78
83 Appendixes SQLHENV henv; SQLHDBC hdbc; SQLRETURN rc; SQLCHAR szconnstrout[256]; SQLCHAR szconnstrin[] = "DRIVER= KB_SQL ODBC 32-bit Driver;UID=DBA;PWD=SHARK;TCP_PORT=6500;HOST= ;"; SQLSMALLINT cbconnstrin, cbconnstrout, cbconnstroutlen; SQLHWND hwnd = NULL; SQLSMALLINT fdrivercompletion = SQL_DRIVER_COMPLETE_REQUIRED; cbconnstrin = cbconnstrout = 256; rc = SQLAllocEnv(&hEnv); rc = SQLAllocConnect(hEnv, &hdbc); rc = SQLDriverConnect( hdbc, hwnd, szconnstrin, SQL_NTS, szconnstrout, cbconnstrout, &cbconnstroutlen, fdrivercompletion); if (rc!= SQL_SUCCESS) { SQLCHAR szsqlstate[10], szerrormsg[128]; = 128, pcberrormsg; SQLSMALLINT cberrormsgmax SQLINTEGER pfnativeerror; rc = SQLError(NULL, hdbc, NULL, szsqlstate, &pfnativeerror, szerrormsg, cberrormsgmax, &pcberrormsg); } rc = SQLDisconnect(hDbc); rc = SQLFreeConnect(hDbc); rc = SQLFreeEnv(hEnv); return 0; } C - Error Messages Message Format When using the KB_SQL ODBC Driver, you may encounter errors and messages of one type or another. It is useful to understand the format of the messages so that you can determine the source of the error or warning. This information is also useful when reporting errors to KBS for technical support. Syntax All messages have the following format: SQLSTATE (native_error_code);[vendor_name] 79
84 KBSODBCDriver [module_name][version_number]api_function; error_message Description SQLSTATE SQLSTATE codes are a standard naming scheme for errors developed by the SQL Access Group (SAG). The returned native error code is mapped to the appropriate SQLSTATE code. If the native error code does not have a corresponding SQLSTATE code, the KB_SQL ODBC Driver returns SQLSTATE (Syntax error or access violation). Native_error_code The native error code number will be included for any error generated by the KB_SQL Server API. It corr esponds to a KB_SQL specific error message. Vendor_name This is the vendor name of the provider of the module that reported the error. In the example below, it is KBS, the provider of the Server API. It could also be Microsoft, if the module was the ODBC Driver Manager. Module_name This is the module responsible for the error. In the example below, it is the KB_SQL Server API. Errors can also be tagged with KB_SQL ODBC Driver for errors generated by the driver. Version_number This is the version number of the module that reported the error. In the example below, it is version 3.6 API_function This is the name of the API function that was last invoked. This name will prefix the first error generated for a particular API function call. Error_message This is the native error text that corresponds to the native error code. In the example below, the test corresponds to the error code for #530. Example (530): [Knowledge Based Systems, Inc.][Server API][V3.6] SQLConnect: User name / password failure Note: For a complete list of all the possible errors and their descriptions, see one of the following queries: SQL_API_SQLS TATE or SQL_ERROR_LIST. SQLCODE Error processing typically handles the following values for SQLCODE. See also, the SQLError function. SQLCODE ODBC Value Description 0-1 SQL_SUCCESS SQL_ERROR Function completed successfully. Function failed. -2 SQL_INVALID_HANDLE Network failure. 1. SQL_SUCCESS_ WITH_INFO Function completed successfully with a 99 SQL_NEED_DATA nonfatal error. The application needs to send parameter 80
85 Appendixes data values. 100 SQL_NO_DATA_FOUND No data found (or End-of-Data) SQLSTATE Mappings The following table shows the SQLSTATE codes that can be generated with diagnostic messages from KB_SQL. See also, the SQLError function. SQLSTATE SQLCODE Description Cardinality violation Data exception String data right truncation Numeric value out of range Error in assignment Datetime field overflow Division by zero. String data, length mismatch. Integrity constraint violation. Invalid cursor state. Invalid transaction state. Invalid statement name. Triggered data change violation. Invalid authorization specification. Invalid SQLDA name Invalid cursor name Invalid condition number. Dynamic SQL syntax error or access violation. Rollback Serialization failure. Syntax error or access violation Check option violation. Operation aborted Success Success with information Disconnect error Data truncated Privilege not revoked. 1. S00 1. Invalid connection string attribute. 1. S01 1. Error in row. 81
86 KBSODBCDriver 1. S02 1. Option value changed. 1. S03 1. No rows updated or deleted. 1. S04 1. More than one row updated or deleted No data found Dynamic SQL error. Wrong number of parameters. Restricted data type attribute violation. Connection error S01 0A Unable to connect to data source. Connection in use. Connection not open. Data source rejected establishment of connection. Connection failure during transaction. Communication link failure. Feature not supported. 21S01 21S Insert value list does not match column list. Degree of derived table does not match column list. 2. A000-1 Direct SQL syntax or access error. 2B000 2C000 2D Dependent privileges exist. Invalid character set name. Invalid transaction termination. 3. C000-1 Duplicate cursor name. 3D000 3F000 HZ Invalid catalog name. Invalid schema name. Remote Database Access condition. IM001 IM Driver does not support this function. Data source name not found and no default driver specified. IM003 IM004 IM005 IM006 IM Driver specified by data source name could not be loaded. Driver's SQLAllocEnv failed. Driver's SQLAllocConnect failed. Driver's SQLSetConnectOption failed. No data source specified; dialog prohibited. IM008-1 Dialog failed. IM009 IM Unable to load translation DLL. Data source name too long. IM011-1 Driver name too long. IM012-1 DRIVER keyword syntax error. 82
87 Appendixes IM013-1 Trace file error. S Base table or view already exists. S Base table not found. S Index already exists. S Index not found. S Column already exists. S Column not found. S No default for column. S General error. S Memory allocation failure. S Invalid column number. S Program type out of range. S SQL data type out of range. S Operation canceled. S Invalid argument value. S Function sequence error. S Operation invalid at this time. S Invalid transaction operation code specified. S No cursor name available. S Invalid string or buffer length. S Descriptor type out of range. S Option type out of range. S Invalid parameter number. S Invalid scale value. S Function type out of range. S Information type out of range. S Column type out of range. S Scope type out of range. S Nullable type out of range. S Uniqueness option type out of range. S Accuracy option type out of range. S Table type out of range. S Direction option out of range. S Invalid precision value. S Invalid parameter type. S Fetch type out of range. S Row value out of range. S Concurrency option out of range. S Invalid cursor position. S Invalid driver completion. S Invalid bookmark value. S1C00-1 Driver not capable. 83
88 KBSODBCDriver S1DE0-1 No data at execution values pending. S1T00-1 Timeout expired D - Info Types SQLGetInfo SQLGetInfo Return Values The following table lists the information types used by ODBC along with the responses from the KB_SQL Server. Note that items marked with an asterisk (*) are based on sitedefined names or values that could be different in your installation. This list can be reproduced using the GetInfoAll option of the ODBC Test utility that comes with the Microsoft ODBC SDK. InfoType Value SQL_ACCESSIBLE_PROCEDURES=20 "Y" SQL_ACCESSIBLE_TABLES=19 "Y" SQL_ACTIVE_CONNECTIONS=0 254 SQL_ACTIVE_ENVIRONMENTS= SQL_ACTIVE_STATEMENTS= SQL_ALTER_DOMAIN=117 0x SQL_ALTER_TABLE=86 0x = SQL_AT_ADD_COLUMN SQL_ASYNC_MODE=10021 SQL_AM_NONE = 0 SQL_BATCH_ROW_COUNT=120 SQL_BATCH_SUPPORT=121 SQL_BOOKMARK_PERSISTENCE=82 SQL_CATALOG_LOCATION=114 SQL_CATALOG_NAME_SEPARATOR=41 SQL_CATALOG_NAME=10003 SQL_CATALOG_TERM=42 SQL_CATALOG_USAGE=92 SQL_COLLATION_SEQ=10004 SQL_COLUMN_ALIAS=87 SQL_CONCAT_NULL_BEHAVIOR=22 0x = SQL_BRC_EXPLICIT 0x x = SQL_BP_DELETE SQL_BP_UPDATE SQL_CL_START = 1 "." "N" "Catalog" 0x "ISO8859-1" "Y" SQL_CB_NULL = 0 SQL_CONVERT_BIGINT=53 SQL_CONVERT_BINARY= 54 0x x
89 Appendixes SQL_CONVERT_BIT=55 0x SQL_CONVERT_CHAR=56 0x SQL_CONVERT_DATE=57 0x SQL_CONVERT_DECIMAL=58 0x SQL_CONVERT_DOUBLE=59 0x SQL_CONVERT_FLOAT=60 0x SQL_CONVERT_FUNCTIONS=48 0x SQL_CONVERT_INTEGER=61 0x SQL_CONVERT_INTERVAL_DAY_TIME=123 0x SQL_CONVERT_INTERVAL_YEAR_MONTH=124 0x SQL_CONVERT_LONGVARBINARY=71 0x SQL_CONVERT_LONGVARCHAR=62 0x SQL_CONVERT_NUMERIC=63 0x SQL_CONVERT_REAL=64 0x SQL_CONVERT_SMALLINT=65 0x SQL_CONVERT_TIME=66 SQL_CONVERT_TIMESTAMP=67 0x x SQL_CONVERT_ TINYINT=68 0x SQL_CONVERT_VARBINARY= 69 0x SQL_CONVERT_VARCHAR=70 0x SQL_CONVERT_ WCHAR=122 0x SQL_CONVERT_WLONGVARCHAR=125 0x SQL_CONVERT_WVARCHAR=126 0x SQL_CORRELAT ION_NAME=7 4 SQL_CN_ANY = 2 SQL_CREATE_ASSERTION=127 0x SQL_CREATE_CHARACTER_SET= 128 0x SQL_CREATE_COLLATION=129 SQL_CREATE_DOMAIN=130 0x x SQL_CREATE_SCHEMA= x = SQL_CS_CREATE_ SQL_CREATE_TABLE=132 SQL_CREATE_TRANSLATION=133 SQL_CREATE_VIEW= x = SQL_CT_CREATE_ 0x x = SQL_CV_CREATE_ SQL_CURSOR_COMMIT_BEHAVIOR=23 SQL_CB_PRESERVE = 2 SQL_CURSOR_ROLLBACK_BEHAVIOR=24 SQL_CB_PRESERVE = 2 SQL_CURSOR_SENSITIVITY=10001 SQL_UNSPECIFIED = 0 85
90 KBSODBCDriver SQL_DATA_SOURCE_NAME=2 "KB_SQL" SQL_DATA_SOURCE_READ_ONLY=25 "N" SQL_DATABASE_NAME=16 "" SQL_DATETIME_LITERALS=119 0x = SQL_DL_SQL92_DATE SQL_DL_SQL92_ TIMESTAMP SQL_DBMS_NAME=17 "KB_SQL" SQL_DBMS_VER=18 SQL_DEFAULT_TXN_ISOLATION=26 "04.00.mmdd" SQL_TXN_READ_UNCOMMITTED = 1 SQL_DESCRIBE_PARAMETER=10002 "N" SQL_DM_VER=171 " " SQL_DRIVER_HDBC= x SQL_DRIVER_HDESC= x SQL_DRIVER_HENV= x SQL_DRIVER_HLIB=76 SQL_DRIVER_HSTMT=5 1. x00fc x SQL_DRIVER_N AME=6 "kbodbc32.dll" SQL_DRIVER_ODBC_VER=77 "03.51" SQL_DRIVER_V ER=7 "04.00.mmdd" SQL_DROP_ ASS ERTION =136 0x SQL_DROP_CHA RACTER_SET=137 0x SQL_DROP_COL LATION =138 0x SQL_DROP_DOMAIN=139 0x SQL_DROP_SCHEMA= x = SQL_DS_DROP_SC SQL_DROP_TABLE=141 SQL_DROP_TRANSLATION= x = SQL_DT_DROP_TA 0x
91 Appendixes SQL_DROP_VIEW= x = SQL_DV_DROP_VI SQL_DYNAMIC_CURSOR_ATTRIBUTES1=144 0x SQL_DYNAMIC_CURSOR_ATTRIBUTES2=145 0x SQL_EXPRESSIONS_IN_ORDERBY=2 7 "Y" SQL_FETCH_DIRECTION=8 1. x = SQL_FD_FETCH_ N SQL_FILE_USAGE=84 SQL_FILE_NOT_SUPPORTED = 0 SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1= x = SQL_CA1_NEXT SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2=147 0x SQL_GETDATA_EXTENSIONS=81 0x B = SQL_GD_ANY_COLUMN SQL_GD_BOUND SQL_GROUP_BY=88 SQL_GB_GROUP_BY_ CONTAINS_SEL SQL_IDENTIFIER_CASE=28 SQL_IC_UPPER = 1 SQL_IDENTIFIER_QUOTE_CHAR=29 " " SQL_INDEX_KEYWORDS=148 0x = SQL_IK_ASC SQL_IK_ D SQL_INFO_SCHEMA_VIEWS=149 0x SQL_INTEGRITY=73 "N" SQL_KEYSET_CURSOR_ATTRIBUTES1=150 0x SQL_KEYSET_CURSOR_ATTRIBUTES2=151 0x SQL_KEYWORDS=89 "" SQL_LIKE_ESCAPE_CLAUSE=113 "Y" SQL_LOCK_TYPES=78 1. x = SQL_LCK_NO_CHA SQL_MAX_ASYNC_CONCURRENT_STATEMENTS= SQL_MAX_BINARY_LITERAL_LEN=112 SQL_MAX_CATALOG_NAME_ LEN= SQL_MAX_CHAR_LITERAL_LEN= SQL_MAX_COLUMN_NAME_LEN=30 30 SQL_MAX_COLUMNS_IN_GROUP_BY=97 0 SQL_MAX_COLUMNS_IN_INDEX=98 0 SQL_MAX_COLUMNS_IN_ORDER_BY=99 0 SQL_MAX_COLUMNS_IN_SELECT=100 0 SQL_MAX_COLUMNS_IN_TABLE=101 0 SQL_MAX_CONCURRENT_ACTIVITIES= SQL_MAX_CURSOR_NAME_LEN=31 30 SQL_MAX_DRIVER_CONNECTIONS=0 254 SQL_MAX_IDENTIFIER_LEN=
92 KBSODBCDriver SQL_MAX_INDEX_SIZE=102 0 SQL_MAX_OWNER_NAME_LEN=32 30 SQL_MAX_PROCEDURE_NAME_LEN=33 35 SQL_MAX_QUALIFIER_NAME_LEN= SQL_MAX_ROW_SIZE_INCLUDES_LONG=103 "N" SQL_MAX_ROW_SIZE= SQL_MAX_SCHEMA_NAME_LEN= SQL_MAX_STATEMENT_LEN=105 0 SQL_MAX_TABLE_NAME_LEN=35 30 SQL_MAX_TABLES_IN_SELECT=106 0 SQL_MAX_USER_NAME_LEN= SQL_MULT_RESULT_SETS=36 "N" SQL_MULTIPLE_ACTIVE_TXN=37 "Y" SQL_NEED_LONG_DATA_LEN=111 "N" SQL_NON_NULLABLE_COLUMNS=75 SQL_NNC_NON_NULL = 1 SQL_NULL_COLLATION=85 SQL_NC_END = 4 SQL_FN_NUM_FLOOR SQL_FN_NUM SQL_FN_NUM_SQRT SQL_FN_NUM_ SQL_FN_NUM_POWER SQL_FN_NUM SQL_NUMERIC_FUNCTIONS=49 0x00D35A21 = SQL_FN_NUM_ABS SQ SQL_FN_NUM_TRUNCATE SQL_ODBC_API_CONFORMANCE=9 SQL_OAC_LEVEL1 = 1 SQL_ODBC_INTERFACE_CONFORMANCE=152 SQL_OIC_CORE = 1 SQL_ODBC_SAG_CLI_CONFORMANCE=12 SQL_OSCC_COMPLIANT = 1 SQL_ODBC_SQL_CONFORMANCE=15 SQL_OSC_CORE = 1 SQL_ODBC_SQL_OPT_IEF=73 "N" SQL_ODBC_VER=10 " " SQL_OU_PROCEDURE_INVOCATION SQL_OU_INDEX_DEFINITION SQL_ SQL_OJ_CAPABILITIES=115 0x = SQL_OJ_ LEFT SQL_OJ_ SQL_OJ_ALL_COMPARISON_OPS SQL_ORDER_BY_COLUMNS_IN_SELECT= 90 "N" SQL_OUTER_JOINS=38 "P" SQL_OWNER_TERM=39 "Schema" SQL_OWNER_USAGE=91 0x F = SQL_OU_DML_STATEM SQL_PARAM_ARRAY_ROW_COUNTS=153 SQL_PARC_BATCH = 1 SQL_PARAM_ARRAY_SELECTS=154 SQL_PAS_NO_BATCH = 2 SQL_POS_OPERATIONS=79 0x
93 Appendixes SQL_PS_POSITIONED_UPDATE SQL_ SQL_OU_PROCEDURE_INVOCATION SQL_OU_TABLE_DEFINITION SQL_O SQL_POSITIONED_STATEMENTS=80 0x = SQL_PS_ POSITIONED_ D SQL_PROCEDURE_TERM=40 "Procedure" SQL_PROCEDURES=21 SQL_QUALIFIER_LOCATION=114 "Y" SQL_CL_START = 1 SQ L_QUALIFIER_NAME_SEPARATOR =41 "." SQL_QUALIFIER_TERM=42 "Catalog" SQL_QUALIFIER_USAGE=92 0x SQL_QUOTED_IDENTIFIER_CASE=93 SQL_IC_SENSITIVE = 3 SQL_ROW_UPDATES=11 "N" SQL_SCHEMA_TERM=39 "Schema" SQL_SCHEMA_USAGE=91 0x F = SQL_OU_DML_STATEM SQL_OU_PRIVILEGE_DEFINITION SQL_SCROLL_CONCURRENCY=43 1. x = SQL_SCCO_READ_ SQL_SCROLL_OPTIONS=44 0x = SQL_SO_ FORWARD_ON SQL_SEARCH_PATTERN_ESCAPE=14 "\" SQL_SERVER_NAME=13 "Server1" SQL_SDF_CURRENT_TIME SQL_SDF SQL_SG_DELETE_TABLE SQL_SG_IN SQL_SG_SELECT_TABLE SQL_SG_U SQL_SR_DELETE_TABLE SQL_SR_IN SQL_SR_SELECT_TABLE SQL_SR_U SQL_SPECIAL_CHARACTERS=94 "" SQL_SQL_CONFORMANCE=118 SQL_SC_SQL92_ENTRY = 1 SQL_SQL92_DATETIME_FUNCTIONS=155 0x = SQL_SDF_CURRENT_DA SQL_SQL92_FOREIGN_KEY_DELETE_RULE= 156 0x SQL_SQL92_FOREIGN_KEY_UPDATE_RULE=157 0x SQL _SQL92_GRANT=158 0x00000C70 = SQL_SG _WITH_GRANT_ SQL_SQL92_NUMERIC_VALUE_FUNCTIONS=159 0x SQL_SQL92_PREDICATES=160 0x00000E07 = SQL_SP_EXISTS SQL_SP_ISNOTNUL SQL_SP_LIKE SQL_SP_IN SQL_SP_BETWEEN SQL_SQL92_RELATIONAL_JOIN_OPERATORS=161 0x = SQL_SRJO_LEFT_OUTER SQL_SRJO_RIGHT_OUTER_JOIN SQL_SQL92_REVOKE=162 0x = SQL_SR_GRANT_OPTIO 89
94 KBSODBCDriver SQL_SSF_LOWER SQL_SSF_UPPER SQL_SQL92_ROW_VALUE_CONSTRUCTOR=163 0x = SQL_SRVC_VALUE_EXP SQL_SQL92_STRING_FUNCTIONS=164 0x E = SQL_SSF_TRANSLATE SQL_SSF_TRI SQL_SQL92_VALUE_EXPRESSIONS=165 0x = SQL_SVE_CASE SQL_ S SQL_STANDARD_CLI_CONFORMANCE= x = SQL_SCC_ISO92_ C SQL_STATIC_CURSOR_ATTRIBUTES1= x = SQL_CA1_NEXT SQL_STATIC_CURSOR_ATTRIBUTES2=168 0x SQL_STATIC_SENSITIVITY=83 0x SQL_STRING_FUNCTIONS=50 0x0007FFFF = SQL_FN_STR_CONCAT SQL_FN_STR_LEFT SQL_FN_STR_LT SQL_FN_STR_LOCATE SQL_FN_STR SQL_FN_STR_REPEAT SQL_FN_STR SQL_FN_STR_RIGHT SQL_FN_STR_R SQL_FN_STR_SUBSTRING SQL_FN_ SQL_FN_STR_ASCII SQL_FN_ STR_C SQL_FN_STR_DIFFERENCE SQL_FN_ SQL_FN_STR_SOUNDEX SQL_FN_ST SQL_SUBQUERIES=95 0x F = SQL_SQ_ COMPARISON SQL_SQ_IN SQL_SQ_QUANTIFIED SQL_SQ_CORRELATED_SUBQUERIES SQL_SYSTEM_FUNCTIONS=51 0x = SQL_FN_SYS_USERNAM SQL_FN_SYS_IFNULL SQL_TABLE_TERM=45 "Table" SQL_TIMEDATE_ADD_INTERVALS=109 0x000001FF = SQL_FN_TSI_FRAC_SEC SQL_FN_TSI_MINUTE SQL_FN_TSI_H SQL_FN_TSI_WEEK SQL_FN_TSI_MO SQL_FN_TSI_QUARTER SQL_FN_TSI SQL_TIMEDATE_DIFF_INTERVALS=110 0x000001FF = SQL_FN_TSI_FRAC_SEC SQL_FN_TSI_MINUTE SQL_FN_TSI_H SQL_FN_TSI_WEEK SQL_FN_TSI_MO SQL_FN_TSI_QUARTER SQL_FN_TSI SQL_TIMEDATE_FUNCTIONS=52 0x0001FFFF = SQL_FN_TD_NOW SQL SQL_FN_TD_DAYOFMONTH SQL_FN SQL_FN_TD_DAYOFYEAR SQL_FN_ SQL_FN_TD_QUARTER SQL_FN_TD_ SQL_FN_TD_CURTIME SQL_FN_TD_ SQL_FN_TD_SECOND SQL_FN_TD_ SQL_FN_TD_TIMESTAMPDIFF SQL_ SQL_FN_TD_MONTHNAME SQL_TXN_CAPABLE=46 SQL_TC_DML = 1 90
95 Appendixes SQL_TXN_ISOLATION_OPTION=72 SQL_UNION=96 SQL_USER_NAME=47 0x = SQL_TXN_READ_UNCO SQL_TXN_READ_COMMITTED SQL_ 0x "User2" SQL_XOPEN_CLI_YEAR=10000 "1995" E - Data Types Data Type Mapping The KB_SQL Server driver maps Server datatypes to ODBC SQL datatypes. The following table lists all Server datatypes and shows the ODBC SQL datatypes to which they are mapped. Note that multiple Server types can map to a single ODBC type, but each ODBC type maps to only one Server type. ServerTypeName ServerTypeID ODBCSqlType SqlTypeName CHARACTER 2 12 SQL_VARCHAR DATE SQL_TYPE_DATE FLAG 4-7 SQL_BIT ID 1. 4 SQL_INTEGER INTEGER 3 4 SQL_INTEGER MOMENT 8 93 SQL_TYPE_TIMESTAMP NUMERIC 7 2. SQL_NUMERIC TEXT 9-1 SQL_LONGVARCHAR TIME 6 92 SQL_TYPE_TIME It is valuable to recognize the type names and numbers in both contexts. Working with ServerAPI queries, either using the host-based interface or through ODBC queries, you will see the ODBC SQLType values going back and forth. Data Type Formats Information is exchanged between the client application and the ODBC Driver using data formats as defined in the C programming language. The exchange of data between the driver and server is primarily done using character string representations of the data, with conversions applied on either side as necessary. It is important to realize that certain data that might appear as numbers to us in M terms might not be a number at all in terms of a non-m application. For example, the DATE, TIME, and MOMENT types are exchanged between the server and driver as character strings in a particular format defined by ODBC. See the table 91
96 KBSODBCDriver below. These values are stored in the driver in a structure and provided to the application in an application-defined format. It is important to understand that the display formatting of the data is the responsible of the application. Consider also the FLAG data type. Using the SQL Editor, you might be used to thinking of FLAG types as YES/NO or TRUE/FAL SE. In the exchange between the driver and server, these values are represented as 1 (true), 0 (false), or NULL if unknown. Depend ing on the application, you could see flag values displayed as -1, Yes/No, or almost any other format applicable to a binary choice. Character strings deserve special consideration as well. In C, a character string can be referenced using several strategies based on the storage of character strings as a array of character bytes. Some applications use a null-terminated-string approach, allowing character strings to be of arbitrary length as long as they are null-terminated. Other applications will use the defined length, as retrieved from SQLDescribeCol, to reference the value as a fixed-length string. This can lead to errors if the actual lengths of your data exceeds the defined length. In these cases, the driver is responsible to raise a warning message about the truncation of the data value. The handling of this warning message is application-dependent. There is a server-side utility, named SQLJ14, that can be used to find data values that exceed the defined length in the data dictionary. Contact KBS te chnical support if you need assistance with this important issue. For the most part, data of the TEXT type appears to the ODBC driver as a character string. It just happens to allow a larger maximum size. On the server side, the TEXT data is stored in a global array of subscripted segments of character strings. The only important point to realize is that the data has no inherent formatting. It is simply a stream of bytes. As with the other types, the application is in control of the formatting. See Data Type Mapping for information about how KB_SQL data types are mapped to the ODBC types. ServerTypeName Base Format ODBC Format CHARACTER "hello" "hello" DATE FLAG ID INTEGER MOMENT 57821, : 36:57 NUMERIC TEXT "abcde" "abcde" TIME :36:57 It is valuable to recognize the data type va lues in both contexts. Working with ServerAPI queries, either using the host-based interface or through ODBC queries, you will see the ODBC format values going back and forth. 92
97 Index 3 32-bit ODBC Drivers... 3 A AC^SQLOS Access... 4, 7, 8, 35, 41, 80, 81 ACCURACY Administrator... 9 AE^SQLOS Allow connections AND ANSI OEM... 5 ANSI... 5 API name API Function Reference API Function Summary API functions... 38, 41, 59, 80 API supports DATE API supports... 35, 71 API supports API_function Architecture ArrayIn ArrayOut AS^SQLOS ASCII Returns ASCII B Background BC^SQLOS Before you begin... 9 Benefits KB_SQL ODBC... 8 Benefits of KB_SQL ODBC... 8 Bitmask receive Bitmask BitString Convert Number B itstring BP^SQLOS
98 KBSODBCDriver C C^SQLOS CA^SQLOS CARDINALITY CHARACTER Character set translation... 5 Characteristics determine Characteristics Characteristics CHARGES Check SQL_ACCESSIBLE_PROCEDUR ES Check Check Check Chr Client Engine... 7 sets Tracing on Client... 7 Client Client Client CM^SQLOS... 46, 47 CNAME Code Page Translator Specify Code Page Translator COLTYPE COLUMN... 46, 47, 61 COLUMN_NAME... 65, 66 ColumnName... 46, 61 COMMIT Congratulations Connection SQL_ACCESS_MODE state Connection options Connection pooling... 3, 31 Connection string... 38, 81 Convert BitString Number Convert BitString Convert Number BitString
99 Index Convert Number Corresponding KB_SQL SQLSTATE Corresponding Create Default Data Source Data Source Create a Default Data Source CS^SQLOS D D MASK^SQLK D SPLIT^SQLK D UNMASK^SQLK D WCPD^SQLK Data Source Give create Data Source Types Data Type Formats Data Type Mapping DATA_TYPE Date form API supports Date Time and TimeStamp Date value Datetime DateValue DBA... 36, 47, 67, 68 DBMSs DC^SQLOS Default Data Source Create Default Data Source DELETE... 55, 57, 62, 64, 67 DeptEmps... 36, 58 Determine characteristics Determine... 3, 7, 31, 48 Determine Determine Direct SQL DISCON S SQLCODE DLL... 5, 35, 81 DoubleQuote
100 KBSODBCDriver DoubleQuoted Literal DP^SQLOS DRIVER... 7, 81 Driver Setup DSNless... 4 DSN-less Connections Dynamic SQL Dynasets E E^SQLOS ED^SQLOS Edit network configuration Enabling the API Trace Feature Enabling tracing End-of-Data Engine client... 7 Engine allocates... 55, 64 Equal Equal Equal Error Code... 49, 80 Error Processing Error Text... 49, 80 Escape-character Excel including... 7 Return Data Excel... 7 Excel... 7 Excel Execute Use Execute... 35, 36 Execute Execute Execute Execute Execute Execute Execute Extensions EZQ... 8 ER^SQLOS
101 Index F F^SQLOS FC^SQLOS FE^SQLOS File data source names... 4 File DSN... 4, 25 FILTER_CONDITION FK^SQLOS FKOWNER FKQUAL FKTABLE FkTableName FkTableOwner FkTableQualifier FLAG... 57, 91 Fn Fn function Fn lcase Fn soundex Foreground Form DATE Form... 48, 71 Form FOUND FS^SQLOS Function causes Function requires... 42, 43 Functions... 7, 35, 36, 38, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 80, 81 G GCN^SQLOS GCO^SQLOS GD^SQLOS GetExternalData GI^SQLOS Give Data Source Give... 8 Give Give GRANTEE GRANTOR GSO^SQLOS GTI^SQLOS
102 KBSODBCDriver H HANDLE Hostname... 9 Hour Returns minute Hour How does it work?... 7 Hstmt... 57, 59, 68 Hstmt containing SELECT I IMPORTANT Imported Tables IN Including Excel... 7 Including... 7 INDEX_NAME INDEX_QUALIFIER InfoType INSERT... 57, 62, 67 INTEGER Internet Information Server... 4 Interoperability... 8 Interpreting the API Trace Invalid SQLDA IP... 9 IS_GRANTABLE ISO J Java... 4 K K KB Systems... 56, 62, 80, 81 KB_SQL corresponds KB_SQL creates KB_SQL Engine... 7, 35, 46 KB_SQL ODBC Benefits... 8 KB_SQL ODBC Driver KB_SQL RDBMS... 7 KB_SQL reserves KB_SQL Server... 7, 36, 47, 49, 80, 84, 91 KB_SQL Server API... 36, 80 KB_SQL Server API supports KB_SQL Server Interface
103 Index Kbodbc32.dll KBSStatement KEY_SEQ... 51, 60 KS^SQLOS L LENGTH LIKE... 71, 74 LIKE Predicate... 71, 74 LIKE Predicate Escape Characters71, 74 LinesIn LinesOut Linked Tables Listening Port... 9 Literal... 36, 58, 71, 74 M M 7, 8, 41, 47, 62 M Community mean... 7 M Community... 7 M globals... 7 M programming MASK^SQLK Maximum number of stored queries14 Message Format Meta precede Meta Metacharacters Metadata Microsoft... 3, 4, 7, 33, 34, 38, 80 Microsoft Access Microsoft Office... 4, 7 Microsoft provides The... 7 Microsoft Query Microsoft Transaction Server... 4 Module_name - This MOMENT MR^SQLOS MSQuery Multiple-character... 71, 74 Multi-row fetch... 5 N Name API Name... 5, 10, 36, 38, 41, 44, 45, 47, 48, 51, 55, 58, 60, 61, 64, 65, 66, 67, 68, 71, 72 99
104 KBSODBCDriver Name Name Name Native_error_code Neg Network Specify Network Library M... 7 Network TroubleShooting NetworkInfo NON_UNIQUE Non-DBA NP^SQLOS NPM NRC uses NRC NRC^SQLOS NS^SQLOS NULL... 48, 67 Nullable... 48, 65, 81 Number Convert BitString nnn represents Number... 5, 7 Number Number Number Number Number Number Number Number Number Number Number Number NUMERIC NumParams NumResultCols... 48, 55 O ODBC.. 3, 4, 5, 7, 31, 35, 36, 38, 44, 48, 56, 57, 58, 62, 71, 74, 80, 91 ODBC ODBC Administrator... 3, 4, 5, 31 ODBC application... 3, 31 ODBC Driver Manager... 7, 35,
105 Index ODBC Example ODBC SDK ODBC Software Development Kit ODBC uses ODBC V ODBC Value ODBC.INI ODBC-compliant Windows application... 7, 8 ODBCSqlType OEM ANSI... 5 OEM... 5 Open Database Connectivity... 7 OPTION... 54, 56, 64 Overview of ADO Programming Overview of Windows Applications 33 Overview_M_Programming OWNER... 46, 47, 60, 61, 65, 66, 67, 68 Owners P P^SQLOS... 41, 60 PAGES Parameter Markers... 36, 38, 48 Parameter takes Parameter.Example Parameters setting Parameters... 9, 10, 35, 36 Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parameters Parmlist PARSEQ Part 101
106 KBSODBCDriver timestamp Part... 10, 38, 41 Part PC^SQLOS PD^SQLOS PK^SQLOS PKOWNER PKQUAL PKTABLE PKTABLE_NAME PKTABLE_OWNER PKTABLE_QUALIFIER PkTableName PkTableName contains PkTableOwner PkTableQualifier PR^SQLOS PRECISION... 48, 65 Precompiled SQL Prefix for stored query routines Prepare/execute PRIVILEGE Procedure Calls ProcName ProcOwner ProcQualifier Programmer's Reference PSEUDO_COLUMN Q QUAL... 46, 47, 60, 61, 65, 66, 67, 68 R RC^SQLOS RDBMS... 8 Receive BitMask Receive Receive Recordsets Refer PATIENT Refer Refer Refer REFERENCES REMARKS Remote Database Access
107 Index Respecify Result Set. 35, 36, 38, 41, 44, 46, 47, 48, 51, 55, 57, 60, 61, 62, 65, 66, 67, 68 Result set containing Results Retrieving Results... 35, 36 Results Results Results Results Results Results Results Results Results Results Results Results Results Results Results Results Results Results Results Results Retrieving Results Retrieving Return Data Excel Return Data Return Values... 72, 84 Returns ASCII Returns minute hour Returns minute Returns NULL Returns seconds Returns site-determined value Returns SQL_NO_DATA_FOUND Returns SQL_SUCCESS Returns starting Returns string ROLLBACK
108 KBSODBCDriver ROLLBACK commands ROWS Run WindowsNT... 9 Run... 9 Run Run Run Run Run Run Run Run S Safe threads... 4 SAG SC^SQLOS Scalar functions... 71, 72 SCALE... 48, 65 SCN^SQLOS SCO^SQLOS SCOPE SDK 32-bit ODBC Drivers... 3 SDK... 3 Search Pattern Escape Characters.. 71 SEQ_IN_INDEX Server Tracing on Server API... 7, 35, 47, 80 Server datatypes Server initial execute Server queries Server user initial execute SERVER_nnn ServerInfo ServerTypeID ServerTypeName SET CLIENT SET PARAMETERS SET STORED_PROCEDURE Sets Setting CLIENT PARAMETERS STORED_PROCEDURE
109 Index Setting Shows SQLSTATE Shows Shows Shows Silent configuration options... 4 Single-character... 71, 74 SingleQuote SingleQuoted Literal SM^SQLOS SoftTag Soundex... 58, 72 Source-dependent Specify Code Page Translator Network Specify... 5 Specify Specify Specify Specify Specify Specify Specify Specify Specify Specify Specify Specify Specify Specify SPLIT^SQLK SQL.. 7, 8, 35, 36, 38, 41, 43, 48, 49, 50, 55, 57, 58, 59, 60, 61, 64, 70, 71, 72, 74, 80, 81, 91 SQL Access Group SQL commands... 38, 41, 43, 50, 58, 60 SQL COMMIT SQL Data Types... 35, 81 SQL datatypes SQL Editor... 8, 74 SQL Editor Example SQL Editor supports SQL SELECT SQL Statement 35, 36, 38, 48, 57, 58, 59 SQL_ACCESS_MODE... 54,
110 KBSODBCDriver SQL_ACCESS_MODE state connection SQL_ACCESS_MODE state SQL_ACCESSIBLE_PROCEDURES check SQL_ACCESSIBLE_PROCEDURES SQL_ACCESSIBLE_PROCEDURES SQL_ACCESSIBLE_TABLES SQL_ACTIVE_CONNECTIONS SQL_ACTIVE_ENVIRONMENTS 84 SQL_ACTIVE_STATEMENTS SQL_ALTER_DOMAIN SQL_ALTER_TABLE SQL_AM_NONE SQL_API_CONNECT_OPTION SQL_API_DATATYPE... 44, 57 SQL_API_INFO_OPTION SQL_API_SQLSTATE SQL_API_STATEMENT_OPTION... 56, 64 SQL_ASYNC_ENABLE SQL_ASYNC_MODE SQL_AT_ADD_COLUMN_SINGLE SQL_ATTR_CONNECTION_POOLI NG... 3, 31 SQL_AUTOCOMMIT SQL_BATCH_ROW_COUNT SQL_BATCH_SUPPORT SQL_BIND_TYPE SQL_BIT... 57, 62, 91 SQL_BOOKMARK_PERSISTENCE SQL_BP_DELETE SQL_BP_SCROLL SQL_BP_UPDATE SQL_BRC_EXPLICIT SQL_CA1_NEXT SQL_CATALOG_LOCATION SQL_CATALOG_NAME SQL_CATALOG_NAME_SEPARAT OR SQL_CATALOG_TERM SQL_CATALOG_USAGE SQL_CB_NULL SQL_CB_PRESERVE SQL_CL_START
111 Index SQL_CLOSE SQL_CN_ANY SQL_COLLATION_SEQ SQL_COLUMN_ALIAS SQL_CONCAT_NULL_BEHAVIOR SQL_CONCURRENCY SQL_CONNECT_OPT_DRVR_START SQL_CONVERT_BIGINT SQL_CONVERT_BINARY SQL_CONVERT_BIT SQL_CONVERT_CHAR SQL_CONVERT_DATE SQL_CONVERT_DECIMAL SQL_CONVERT_DOUBLE SQL_CONVERT_FLOAT SQL_CONVERT_FUNCTIONS SQL_CONVERT_INTEGER SQL_CONVERT_INTERVAL_DAY_ TIME SQL_CONVERT_INTERVAL_YEA R_MONTH SQL_CONVERT_LONGVARBINAR Y SQL_CONVERT_LONGVARCHAR SQL_CONVERT_NUMERIC SQL_CONVERT_REAL SQL_CONVERT_SMALLINT SQL_CONVERT_TIME SQL_CONVERT_TIMESTAMP SQL_CONVERT_TINYINT SQL_CONVERT_VARBINARY SQL_CONVERT_VARCHAR SQL_CONVERT_WCHAR SQL_CONVERT_WLONGVARCHA R SQL_CONVERT_WVARCHAR SQL_CORRELATION_NAME SQL_CREATE_ASSERTION SQL_CREATE_CHARACTER_SET SQL_CREATE_COLLATION SQL_CREATE_DOMAIN SQL_CREATE_SCHEMA SQL_CREATE_TABLE SQL_CREATE_TRANSLATION SQL_CREATE_VIEW SQL_CS_CREATE_SCHEMA
112 KBSODBCDriver SQL_CT_CREATE_TABLE SQL_CURRENT_QUALIFIER SQL_CURSOR_COMMIT_BEHAVI OR SQL_CURSOR_ROLLBACK_BEHA VIOR SQL_CURSOR_SENSITIVITY SQL_CURSOR_TYPE SQL_CV_CREATE_VIEW SQL_DATA_SOURCE_NAME SQL_DATA_SOURCE_READ_ONL Y SQL_DATABASE_NAME SQL_DATETIME_LITERALS SQL_DBMS_NAME SQL_DBMS_VER SQL_DEFAULT_TXN_ISOLATION SQL_DESCRIBE_PARAMETER.. 84 SQL_DL_SQL92_DATE SQL_DL_SQL92_TIME SQL_DL_SQL92_TIMESTAMP SQL_DM_VER SQL_DRIVER_HDBC SQL_DRIVER_HDESC SQL_DRIVER_HENV SQL_DRIVER_HLIB SQL_DRIVER_HSTMT SQL_DRIVER_NAME SQL_DRIVER_ODBC_VER SQL_DRIVER_VER SQL_DROP SQL_DROP_ASSERTION SQL_DROP_CHARACTER_SET.. 84 SQL_DROP_COLLATION SQL_DROP_DOMAIN SQL_DROP_SCHEMA SQL_DROP_TABLE SQL_DROP_TRANSLATION SQL_DROP_VIEW SQL_DS_DROP_SCHEMA SQL_DT_DROP_TABLE SQL_DV_DROP_VIEW SQL_DYNAMIC_CURSOR_ATTRI BUTES SQL_DYNAMIC_CURSOR_ATTRI BUTES SQL_ERROR SQL_ERROR_LIST
113 Index SQL_EXPRESSIONS_IN_ORDERB Y SQL_FD_FETCH_NEXT SQL_FETCH_DIRECTION SQL_FILE_NOT_SUPPORTED SQL_FILE_USAGE SQL_FN_ABS SQL_FN_ASCII SQL_FN_CEILING SQL_FN_CHAR SQL_FN_CONCAT SQL_FN_DAYNAME SQL_FN_DAYOFMONTH SQL_FN_DAYOFWEEK SQL_FN_DAYOFYEAR SQL_FN_DIFFERENCE SQL_FN_FLOOR... 58, 72 SQL_FN_HOUR SQL_FN_IDENTIFIER SQL_FN_IFNULL SQL_FN_INITIAL_CAPS SQL_FN_INSERT SQL_FN_LCASE SQL_FN_LEFT SQL_FN_LENGTH SQL_FN_LOCATE SQL_FN_LTRIM SQL_FN_MINUTE SQL_FN_MOD SQL_FN_MONTH SQL_FN_MONTHNAME SQL_FN_NEXT_MONTH_FIRST. 72 SQL_FN_NEXT_MONTH_LAST.. 72 SQL_FN_NEXT_WEEKDAY SQL_FN_NEXT_WEEKEND_DAY SQL_FN_NUM_ABS SQL_FN_NUM_CEILING SQL_FN_NUM_FLOOR SQL_FN_NUM_MOD SQL_FN_NUM_PI SQL_FN_NUM_POWER SQL_FN_NUM_RAND SQL_FN_NUM_ROUND SQL_FN_NUM_SIGN SQL_FN_NUM_SQRT SQL_FN_NUM_TRUNCATE SQL_FN_POWER
114 KBSODBCDriver SQL_FN_QUARTER SQL_FN_RAND SQL_FN_REPEAT SQL_FN_REPLACE SQL_FN_RIGHT SQL_FN_ROUND SQL_FN_RTRIM SQL_FN_SECOND SQL_FN_SIGN SQL_FN_SOUNDEX... 58, 72 SQL_FN_SPACE SQL_FN_SQRT SQL_FN_STR_ASCII SQL_FN_STR_CHAR SQL_FN_STR_CONCAT SQL_FN_STR_DIFFERENCE SQL_FN_STR_INSERT SQL_FN_STR_LCASE SQL_FN_STR_LEFT SQL_FN_STR_LENGTH SQL_FN_STR_LOCATE SQL_FN_STR_LOCATE_ SQL_FN_STR_LTRIM SQL_FN_STR_REPEAT SQL_FN_STR_REPLACE SQL_FN_STR_RIGHT SQL_FN_STR_RTRIM SQL_FN_STR_SOUNDEX SQL_FN_STR_SPACE SQL_FN_STR_SUBSTRING SQL_FN_STR_UCASE SQL_FN_SUBSTRING SQL_FN_SYS_DBNAME SQL_FN_SYS_IFNULL SQL_FN_SYS_USERNAME SQL_FN_TD_CURDATE SQL_FN_TD_CURTIME SQL_FN_TD_DAYNAME SQL_FN_TD_DAYOFMONTH SQL_FN_TD_DAYOFWEEK SQL_FN_TD_DAYOFYEAR SQL_FN_TD_HOUR SQL_FN_TD_MINUTE SQL_FN_TD_MONTH SQ L_FN_TD_MONTHNAME SQL_FN_TD_NOW
115 Index SQL_FN_TD_QUARTER SQL_FN_TD_SECOND SQL_FN_TD_TIMESTAMPADD.. 84 SQL_FN_TD_TIMESTAMPDIFF.. 84 SQL_FN_TD_WEEK SQL_FN_TD_YEAR SQL_FN_TIMESTAMPADD SQL_FN_TIMESTAMPDIFF SQL_FN_TIMESTAMPPART SQL_FN_TRUNCATE SQL_FN_TSI_DAY SQL_FN_TSI_FRAC_SECOND SQL_FN_TSI_HOUR SQL_FN_TSI_MINUTE SQL_FN_TSI_MONTH SQL_FN_TSI_QUARTER SQL_FN_TSI_SECOND SQL_FN_TSI_WEEK SQL_FN_TSI_YEAR SQL_FN_UCASE SQL_FN_WEEK SQL_FN_YEAR SQL_FORWARD_ONLY_CURSOR_ ATTRIBUTES SQL_FORWARD_ONLY_CURSOR_ ATTRIBUTES SQL_function SQL_FUNCTION_LIST SQL_FUNCTION_LIST provides.. 72 SQL_GB_GROUP_BY_CONTAINS_ SELECT SQL_GD_ANY_COLUMN SQL_GD_ANY_ORDER SQL_GD_BOUND SQL_GET_BOOKMARK SQ L_GETDATA_EXTENSIONS SQL_GROUP_BY SQL_IC_SENSITIVE SQL_IC_UPPER SQL_IDENTIFIER... 68, 71, 72 SQL_IDENTIFIER_CASE SQL_IDENTIFIER_QUOTE_CHAR SQL_IK_ASC SQL_IK_DESC SQL_INDEX_KEYWORDS SQL_INFO_SCHEMA_VIEWS SQL_INTEGER SQL_INTEGRITY
116 KBSODBCDriver SQL_INVALID SQL_KEYSET_CURSOR_ATTRIBU TES SQL_KEYSET_CURSOR_ATTRIBU TES SQL_KEYSET_SIZE SQL_KEYWORDS SQL_LCK_NO_CHANGE SQL_LIKE_ESCAPE_CLAUSE SQL_LOCK_TYPES SQL_LOGIN_TIMEOUT SQL_LONGVARCHAR SQL_lower SQL_MAX_ASYNC_CONCURREN T_STATEMENTS SQL_MAX_BINARY_LITERAL_LE N SQL_MAX_CATALOG_NAME_LE N SQL_MAX_CHAR_LITERAL_LEN SQL_MAX_COLUMN_NAME_LEN SQL_MAX_COLUMNS_IN_GROUP _BY SQL_MAX_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_ORDER _BY SQL_MAX_COLUMNS_IN_SELEC T SQL_MAX_COLUMNS_IN_TABLE SQL_MAX_CONCURRENT_ACTIV ITIES SQL_MAX_CURSOR_NAME_LEN SQL_MAX_DRIVER_CONNECTIO NS SQL_MAX_IDENTIFIER_LEN SQL_MAX_INDEX_SIZE SQL_MAX_LENGTH SQL_MAX_OWNER_NAME_LEN84 SQL_MAX_PROCEDURE_NAME_L EN SQL_MAX_QUALIFIER_NAME_LE N SQL_MAX_ROW_SIZE SQL_MAX_ROW_SIZE_INCLUDES _LONG SQL_MAX_ROWS SQL_MAX_SCHEMA_NAME_LEN SQL_MAX_STATEMENT_LEN SQL_MAX_TABLE_NAME_LEN
117 Index SQL_MAX_TABLES_IN_SELECT84 SQL_MAX_USER_NAME_LEN SQL_MULT_RESULT_SETS SQL_MULTIPLE_ACTIVE_TXN. 84 SQL_NC_END SQL_NEED_DATA SQL_NEED_LONG_DATA_LEN.. 84 SQL_NNC_NON_NULL SQL_NO_DATA SQL_NO_NULLS SQL_NON_NULLABLE_COLUMNS SQL_NOSCAN SQL_NULL_COLLATION SQL_NULLABLE SQL_NULLABLE_UNKNOWN SQL_NUMERIC SQL_NUMERIC_FUNCTIONS SQL_OAC_LEVEL SQL_ODBC_API_CONFORMANCE SQL_ODBC_CURSORS SQL_ODBC_INTERFACE_CONFO RMANCE SQL_ODBC_SAG_CLI_CONFORM ANCE SQL_ODBC_SQL_CONFORMANC E SQL_ODBC_SQL_OPT_IEF SQL_ODBC_VER SQL_OIC_CORE SQL_OJ_ALL_COMPARISON_OPS SQL_OJ_CAPABILITIES SQL_OJ_LEFT SQL_OJ_RIGHT SQL_OPT_TRACE SQL_OPT_TRACEFILE SQL_ORDER_BY_COLUMNS_IN_S ELECT SQL_OSC_CORE SQL_OSCC_COMPLIANT SQL_OU_DML_STATEMENTS SQL_OU_INDEX_DEFINITION SQL_OU_PRIVILEGE_DEFINITIO N SQL_OU_PROCEDURE_INVOCATI ON SQL_OU_PROCEDURE_INVOCATI ON SQL_OU_TABLE_DEFINITIO N
118 KBSODBCDriver SQL_OU_TABLE_DEFINITION SQL_OUTER_JOINS SQL_OWNER_TERM SQL_OWNER_USAGE SQL_PACKET_SIZE SQL_PARAM_ARRAY_ROW_COU NTS SQL_PARAM_ARRAY_SELECTS 84 SQL_PARC_BATCH SQL_PAS_NO_BATCH SQL_POS_OPERATIONS SQL_POSITIONED_STATEMENTS SQL_PROCEDURE_TERM SQL_PROCEDURES SQL_PS_POSITIONED_DELETE. 84 SQL_PS_POSITIONED_UPDATE 84 SQL_PS_SELECT_FOR_UPDATE 84 SQL_QUALIFIER_LOCATION SQL_QUALIFIER_NAME_SEPARA TOR SQL_QUALIFIER_TERM SQL_QUALIFIER_USAGE SQL_QUERY_TIMEOUT SQL_QUIET_MODE SQL_QUOTED_IDENTIFIER_CASE SQL_RESET_PARAMS SQL_RETRIEVE_DATA SQL_ROW_NUMBER SQL_ROW_UPDATES SQL_ROWSET_SIZE SQL_SC_SQL92_ENTRY SQL_SCC_ISO92_CLI SQL_SCCO_READ_ONLY SQL_SCHEMA_TERM SQL_SCHEMA_USAGE SQL_SCROLL_CONCURRENCY 84 SQL_SCROLL_OPTIONS SQL_SDF_CURRENT_DATE SQL_SDF_CURRENT_TIME SQL_SDF_CURRENT_TIMESTAM P SQL_SEARCH_PATTERN_ESCAPE SQL_SERVER_NAME SQL_SG_DELETE_TABLE SQL_SG_INSERT_TABLE SQL_SG_SELECT_TABLE SQL_SG_UPDATE_TABLE
119 Index SQL_SG_WITH_GRANT_OPTION SQL_SIMULATE_CURSOR SQL_SO_FORWARD_ONLY SQL_SO_STATIC SQL_SP_BETWEEN SQL_SP_EXISTS SQL_SP_IN SQL_SP_ISNOTNULL SQL_SP_ISNULL SQL_SP_LIKE SQL_SPECIAL_CHARACTERS SQL_SQ_COMPARISON SQL_SQ_CORRELATED_SUBQUE RIES SQL_SQ_EXISTS SQL_SQ_IN SQL_SQ_QUANTIFIED SQL_SQL_CONFORMANCE SQL_SQL92_DATETIME_FUNCTI ONS SQL_SQL92_FOREIGN_KEY_DEL ETE_RULE SQL_SQL92_FOREIGN_KEY_UPD ATE_RULE SQL_SQL92_GRANT SQL_SQL92_NUMERIC_VALUE_F UNCTIONS SQL_SQL92_PREDICATES SQL_SQL92_RELATIONAL_JOIN_ OPERATORS SQL_SQL92_REVOKE SQL_SQL92_ROW_VALUE_CONST RUCTOR SQL_SQL92_STRING_FUNCTIONS SQL_SQL92_VALUE_EXPRESSION S SQL_SR_DELETE_TABLE SQL_SR_GRANT_OPTION_FOR. 84 SQL_SR_INSERT_TABLE SQL_SR_SELECT_TABLE SQL_SR_UPDATE_TABLE SQL_SRJO_LEFT_OUTER_JOIN 84 SQL_SRJO_RIGHT_OUTER_JOIN SQL_SRVC_NULL SQL_SRVC_VALUE_EXPRESSION SQL_SSF_LOWER SQL_SSF_SUBSTRING SQL_SSF_TRANSLATE SQL_SSF_TRIM_BOTH
120 KBSODBCDriver SQL_SSF_UPPER SQL_STANDARD_CLI_CONFORM ANCE SQL_STATIC_CURSOR_ATTRIBU TES SQL_STATIC_CURSOR_ATTRIBU TES SQL_STATIC_SENSITIVITY SQL_STRING_FUNCTIONS SQL_SUBQUERIES SQL_SUCCESS SQL_SVE_CASE SQL_SVE_COALESCE SQL_SYSTEM_FUNCTIONS SQL_TABLE_TERM SQL_TC_DML SQL_TEST... 47, 65, 66 SQL_TIMEDATE_ADD_INTERVAL S SQL_TIMEDATE_DIFF_INTERVA LS SQL_TIMEDATE_FUNCTIONS SQL_TRANSLATE_DLL SQL_TRANSLATE_OPTION SQL_TXN_CAPABLE SQL_TXN_ISOLATION SQL_TXN_ISOLATION_OPTION 84 SQL_TXN_READ_COMMITTED. 84 SQL_TXN_READ_UNCOMMITTED SQL_TXN_REPEATABLE_READ 84 SQL_TYPE_DATE SQL_TYPE_TIME SQL_TYPE_TIMESTAMP SQL_UNBIND SQL_UNION SQL_UNSPECIFIED SQL_USE_BOOKMARKS SQL_USER_NAME SQL_VARCHAR SQL_XOPEN_CLI_YEAR SQLAllocConnect... 42, 81 SQLAllocEnv... 43, 81 SQLAllocStmt SQLBindCol SQLBindParameter... 36, 44 SQLCancel SQLCODE... 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 70, 80,
121 Index SQLCODE<0 Discon41, 43, 44, 45, 47, 48, 50, 51, 54, 55, 56, 57, 60, 62, 63, 64, 65, 66, 70 SQLCODE<0 Q SQLCOL... 44, 45, 48, 55 SQLColAttributes SQLColumnPrivileges SQLColumns SQLConnect... 68, 77, 80 SQLDescribeCol... 45, 48 SQLDescribeParam SQLDisconnect SQLDriverConnect SQLError SQLExecDirect... 35, 50 SQLExecute... 35, 50 SQLExtendedFetch... 5 SQLFetch SQLFetchScroll... 5 SQLForeignKeys SQLFreeConnect SQLFreeEnv SQLFreeStmt SQLFreeStmt Option SQLGetConnectOption SQLGetCursorName SQLGetData SQLGetFunctions SQLGetInfo SQLGetStmtOption SQLGetTypeInfo SQLHDBC... 42, 43, 47, 49, 53, 54, 56, 58, 63, 70 SQLHENV... 42, 43, 53 SQLHSTMT. 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 59, 60, 61, 62, 64, 65, 66, 67, 68 SQLJ SQLJ SQLJ SQLJ , 59 SQLJ SQLMoreResults SQLNativeSql SQLNC SQLNT SQLNumParams SQLNumResultCols SQLParamData
122 KBSODBCDriver SQLPrepare... 35, 41, 50, 60 SQLPrimaryKeys SQLProcedureColumns... 36, 61 SQLProcedures... 36, 61 SQLPutData... 38, 62 SQLRowCount... 57, 62 SQLSetConnectOption... 63, 81 SQLSetConnectOption Option SQLSetCursorName SQLSetEnvAttr... 3, 31 SQLSetParam function SQLSetStmtOption SQLSetStmtOption Option SQLSpecialColumns SQLSpecialColumns Column SQLSTATE corresponding shows SQLSTATE SQLSTATE Mappings SQLStatistics... 47, 66 SQLStatistics Column SQLTablePrivileges SQLTables SQLTables Column SQLTEXT... 41, 50, 60 SQLTransact SQLTransact Option SQLTTYPE SqlType... 48, 54 SqlTypeName SQLUAUTH SQLUNAME SSO^SQLOS Starting the Server Statement Execution... 35, 61 Stopping the Server Stored Procedures Stored procedures help STORED_PROCEDURE Setting STORED_PROCEDURE String_exp String_exp String_exp SYSTEM TABLE
123 Index System Tables... 38, 68 T T^SQLOS TABLE... 46, 47, 60, 65, 66, 67, 68 Table Owner... 47, 65, 66, 67, 68 Table Qualifier... 47, 65, 66, 67, 68 Table Type... 68, 81 TABLE_NAME... 60, 66, 67, 68 TABLE_OWNER... 60, 66, 67, 68 TABLE_QUALIFIER... 60, 66, 67, 68 TABLE_TYPE TableName... 46, 60, 67 TableOwner... 46, 60, 67 TableQualifier... 46, 60, 67 Tables... 7, 38, 46, 47, 51, 60, 63, 64, 65, 66, 67, 68, 71, 81, 84, 91 TCP/IP... 7, 35 TCP/IP Defaults TCP/IP Host Definition TCP/IP Port Definition TEXT The KB_SQL ODBC Architecture... 7 TIME... 71, 91 part Timestamp Data Timestamp_exp Timestamp_exp Timestamp-literal TM^SQLOS Trace API calls Tracing on Client Server Tracing on the Client Tracing on the Server Ts timestamp-literal TTYPE TYPE... 44, 48, 54, 56, 57, 63, 66, 68 TYPE_NAME Types... 8, 36, 38, 44, 45, 48, 54, 56, 57, 62, 63, 65, 68, 71, 80, 81, 91 U Unfetched UNIQUE UNMASK UPDATE... 55, 57, 62, 64, 67 TimeStamp 119
124 KBSODBCDriver UPDATE table-name.where CURRENT OF... 55, 64 Use Execute NRC Use... 3, 4, 7, 8, 31, 36 Use Use Use Use Use Use Use Use Use Use Use Use Use Use Use Use Use Use Use Use User Using data-at-execution parameters 35 Using QUICK^SQL V V VALUE... 45, 54, 55, 56, 62, 63, 64 Variable Names Vendor_name - This Version_number - This VIEW Viewing the API Trace Views... 68, 81 Visual Basic... 7, 35 VMS Cluster issues W WCPD^SQLK What is ODBC?... 7 Why Program Wildcards... 68, 71 Windows... 7, 35 Windows programming
125 Index WindowsNT running... 9 WITH_INFO Word... 7, 41, 71 WindowsNT
Trusted RUBIX TM. Version 6. ODBC Guide. Revision 7 RELATIONAL DATABASE MANAGEMENT SYSTEM TEL +1-202-412-0152. Infosystems Technology, Inc.
Trusted RUBIX TM Version 6 ODBC Guide Revision 7 RELATIONAL DATABASE MANAGEMENT SYSTEM Infosystems Technology, Inc. 4 Professional Dr - Suite 118 Gaithersburg, MD 20879 TEL +1-202-412-0152 1981, 2014 Infosystems
Realtime SQL Database System
BAPAS -DB Realtime SQL Database System - ODBC-Driver for ODBC 3.0 - - English - Release 1.8 Reg. No. 3.4.7.16.1 Date: 2008-01-02 BAPAS-DB Realtime SQL Database System - ODBC-Driver for ODBC 3.0 - Release
Transbase R ODBC Driver Version 1.0
Transbase R ODBC Driver Version 1.0 Transaction Software GmbH Willy-Brandt-Allee 2 D-81829 München Germany Phone: +49-89-62709-0 Fax: +49-89-62709-11 Email: [email protected] http://www.transaction.de
IBM Informix ODBC Driver Programmer's Manual
Informix Product Family Informix Client Software Development Kit Version 3.50 IBM Informix ODBC Driver Programmer's Manual SC23-9423-04 Informix Product Family Informix Client Software Development Kit
Cloudera ODBC Driver for Impala Version 2.5.15
Cloudera ODBC Driver for Impala Version 2.5.15 Important Notice 2010-2013 Cloudera, Inc. All rights reserved. Cloudera, the Cloudera logo, Cloudera Impala, Impala, and any other product or service names
The release notes provide details of enhancements and features in Cloudera ODBC Driver for Impala 2.5.30, as well as the version history.
Cloudera ODBC Driver for Impala 2.5.30 The release notes provide details of enhancements and features in Cloudera ODBC Driver for Impala 2.5.30, as well as the version history. The following are highlights
FileMaker 11. ODBC and JDBC Guide
FileMaker 11 ODBC and JDBC Guide 2004 2010 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker, Inc. registered
Increasing Driver Performance
Increasing Driver Performance DataDirect Connect Series ODBC Drivers Introduction One of the advantages of DataDirect Connect Series ODBC drivers (DataDirect Connect for ODBC and DataDirect Connect64 for
OpenScape Business V2
OpenScape Business V2 Description Open Directory Service ODBC-ODBC Bridge Version 1.0 Table of Contents 1. Overview 5 1.1. ODBC-Bridge Client 5 1.2. ODBC-Server 6 1.3. Access Control 6 1.4. Licensing 7
ODBC Client Driver Help. 2015 Kepware, Inc.
2015 Kepware, Inc. 2 Table of Contents Table of Contents 2 4 Overview 4 External Dependencies 4 Driver Setup 5 Data Source Settings 5 Data Source Setup 6 Data Source Access Methods 13 Fixed Table 14 Table
ODBC Driver for Omnis Data Files. TigerLogic Corporation
ODBC Driver for Omnis Data Files TigerLogic Corporation September 2009 The software this document describes is furnished under a license agreement. The software may be used or copied only in accordance
ODBC Applications: Writing Good Code
05_0137143931_ch05.qxd 2/17/09 2:04 PM Page 123 CHAPTER FIVE ODBC Applications: Writing Good Code D eveloping performance-optimized ODBC applications is not easy. Microsoft s ODBC Programmer s Reference
Raima Database Manager 11.0
Raima Database Manager 11.0 ODBC API Reference Guide 1 Trademarks Raima Database Manager (RDM ), RDM Embedded and RDM Server are trademarks of Raima Inc. and may be registered in the United States of America
Release Notes For Versant/ODBC On Windows. Release 7.0.1.4
Release Notes For Versant/ODBC On Windows Release 7.0.1.4 Table of Contents CHAPTER 1: Release Notes... 3 Description of Release... 4 System Requirements... 4 Capabilities of the Drivers... 5 Restrictions
ODBC Sample Application for Tandem NonStop SQL/MX
NonStop Software SDK Application TechNote ODBC Sample Application for Tandem NonStop SQL/MX NonStop Software Developers Page The Windows NT Server program discussed in this NonStop Software Application
DBISAM Version 4 ODBC Driver Manual
Table of Contents DBISAM Version 4 ODBC Driver Manual Table Of Contents Chapter 1 - Before You Begin 1 1.1 Application Compatibility 1 Chapter 2 - Using the ODBC Driver 5 2.1 Configuring a Data Source
ODBC Overview and Information
Appendix A ODBC ODBC Overview and Information ODBC, (Open Database Connectivity), is Microsoft s strategic interface for accessing data in an environment of relational and non-relational database management
4D v1x ODBC Driver INSTALLATION GUIDE
INSTALLATION GUIDE Open Database Connectivity Standard (ODBC) is an open standard application programming interface (API) used to access one or more databases from a single application. In order to set
Integrating VoltDB with Hadoop
The NewSQL database you ll never outgrow Integrating with Hadoop Hadoop is an open source framework for managing and manipulating massive volumes of data. is an database for handling high velocity data.
SEER Enterprise Shared Database Administrator s Guide
SEER Enterprise Shared Database Administrator s Guide SEER for Software Release 8.2 SEER for IT Release 2.2 SEER for Hardware Release 7.3 March 2016 Galorath Incorporated Proprietary 1. INTRODUCTION...
SOLID Programmer Guide
SOLID Programmer Guide June, 2000 Version 3.51 Solid Information Technology Ltd. www.solidtech.com [email protected];[email protected] Copyright 1992, 1993, 1994 by Microsoft Corporation Copyright
FileMaker 13. ODBC and JDBC Guide
FileMaker 13 ODBC and JDBC Guide 2004 2013 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker and Bento are trademarks of FileMaker, Inc.
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
Sage ERP MAS 90 Sage ERP MAS 200 Sage ERP MAS 200 SQL. Installation and System Administrator's Guide 4MASIN450-08
Sage ERP MAS 90 Sage ERP MAS 200 Sage ERP MAS 200 SQL Installation and System Administrator's Guide 4MASIN450-08 2011 Sage Software, Inc. All rights reserved. Sage, the Sage logos and the Sage product
Setting Up ALERE with Client/Server Data
Setting Up ALERE with Client/Server Data TIW Technology, Inc. November 2014 ALERE is a registered trademark of TIW Technology, Inc. The following are registered trademarks or trademarks: FoxPro, SQL Server,
Architecting the Future of Big Data
Hive ODBC Driver User Guide Revised: July 22, 2014 2012-2014 Hortonworks Inc. All Rights Reserved. Parts of this Program and Documentation include proprietary software and content that is copyrighted and
FileMaker 12. ODBC and JDBC Guide
FileMaker 12 ODBC and JDBC Guide 2004 2012 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker and Bento are trademarks of FileMaker, Inc.
KB_SQL SQL Reference Guide Version 4
KB_SQL SQL Reference Guide Version 4 1995, 1999 by KB Systems, Inc. All rights reserved. KB Systems, Inc., Herndon, Virginia, USA. Printed in the United States of America. No part of this manual may be
Sage 100 ERP. Installation and System Administrator s Guide
Sage 100 ERP Installation and System Administrator s Guide This is a publication of Sage Software, Inc. Version 2014 Copyright 2013 Sage Software, Inc. All rights reserved. Sage, the Sage logos, and the
Copyright. Copyright. Arbutus Software Inc. 270-6450 Roberts Street Burnaby, British Columbia Canada V5G 4E1
i Copyright Copyright 2015 Arbutus Software Inc. All rights reserved. This manual may contain dated information. Use of these materials is based on the understanding that this manual may not contain all
Rapid Assessment Key User Manual
Rapid Assessment Key User Manual Table of Contents Getting Started with the Rapid Assessment Key... 1 Welcome to the Print Audit Rapid Assessment Key...1 System Requirements...1 Network Requirements...1
StruxureWare Power Monitoring 7.0.1
StruxureWare Power Monitoring 7.0.1 Installation Guide 7EN02-0308-01 07/2012 Contents Safety information 5 Introduction 7 Summary of topics in this guide 7 Supported operating systems and SQL Server editions
FileMaker 14. ODBC and JDBC Guide
FileMaker 14 ODBC and JDBC Guide 2004 2015 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker and FileMaker Go are trademarks of FileMaker,
DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service
DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service Achieving Scalability and High Availability Abstract DB2 Connect Enterprise Edition for Windows NT provides fast and robust connectivity
Danware introduces NetOp Remote Control in version 7.01 replacing version 7.0 as the shipping version.
Release notes version 7.01 Danware introduces NetOp Remote Control in version 7.01 replacing version 7.0 as the shipping version. It s available as a free downloadable upgrade to existing version 7.0 customers
Setting up an MS SQL Server for IGSS
Setting up an MS SQL Server for IGSS Table of Contents Table of Contents...1 Introduction... 2 The Microsoft SQL Server database...2 Setting up an MS SQL Server...3 Installing the MS SQL Server software...3
How to Configure Informix Connect and ODBC
Informix User Forum 2005 Moving Forward With Informix How to Configure Informix Connect and ODBC James Edmiston Informix DBA Consultant Quest Information Systems, Inc. Atlanta, Georgia December 8-9, 2005
ODBC and SQL Reference
ODBC and SQL Reference June, 1999 This manual details ODBC conformance and SQL language support provided by the Dharma DataLink SDK. It also describes configuration of the ODBC SDK Drivers. Software Version:
SpatialWare. Version 4.9.2 for Microsoft SQL Server 2008 INSTALLATION GUIDE
SpatialWare Version 4.9.2 for Microsoft SQL Server 2008 INSTALLATION GUIDE Information in this document is subject to change without notice and does not represent a commitment on the part of the vendor
Using the Caché SQL Gateway
Using the Caché SQL Gateway Version 2007.1 04 June 2007 InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com Using the Caché SQL Gateway Caché Version 2007.1 04 June 2007 Copyright
EXPRESSCLUSTER X for Windows Quick Start Guide for Microsoft SQL Server 2014. Version 1
EXPRESSCLUSTER X for Windows Quick Start Guide for Microsoft SQL Server 2014 Version 1 NEC EXPRESSCLUSTER X 3.x for Windows SQL Server 2014 Quick Start Guide Document Number ECX-MSSQL2014-QSG, Version
Data Access Guide. BusinessObjects 11. Windows and UNIX
Data Access Guide BusinessObjects 11 Windows and UNIX 1 Copyright Trademarks Use restrictions Patents Copyright 2004 Business Objects. All rights reserved. If you find any problems with this documentation,
Sage 300 ERP 2014. Installation and Administration Guide
Sage 300 ERP 2014 Installation and Administration Guide This is a publication of Sage Software, Inc. Copyright 2013. Sage Software, Inc. All rights reserved. Sage, the Sage logos, and the Sage product
Networking Best Practices Guide. Version 6.5
Networking Best Practices Guide Version 6.5 Summer 2010 Copyright: 2010, CCH, a Wolters Kluwer business. All rights reserved. Material in this publication may not be reproduced or transmitted in any form
for Networks Installation Guide for the application on the server August 2014 (GUIDE 2) Lucid Exact Version 1.7-N and later
for Networks Installation Guide for the application on the server August 2014 (GUIDE 2) Lucid Exact Version 1.7-N and later Copyright 2014, Lucid Innovations Limited. All Rights Reserved Lucid Research
Matisse Installation Guide for MS Windows. 10th Edition
Matisse Installation Guide for MS Windows 10th Edition April 2004 Matisse Installation Guide for MS Windows Copyright 1992 2004 Matisse Software Inc. All Rights Reserved. Matisse Software Inc. 433 Airport
HOW-TO. Access Data using BCI. Brian Leach Consulting Limited. http://www.brianleach.co.uk
HOW-TO Access Data using BCI http://www.brianleach.co.uk Contents Introduction... 3 Notes... 4 Defining the Data Source... 5 Check the Definition... 7 Setting up the BCI connection... 8 Starting with BCI...
for Networks Installation Guide for the application on the server July 2014 (GUIDE 2) Lucid Rapid Version 6.05-N and later
for Networks Installation Guide for the application on the server July 2014 (GUIDE 2) Lucid Rapid Version 6.05-N and later Copyright 2014, Lucid Innovations Limited. All Rights Reserved Lucid Research
SimbaEngine SDK 9.4. Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days. Last Revised: October 2014. Simba Technologies Inc.
Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days Last Revised: October 2014 Simba Technologies Inc. Copyright 2014 Simba Technologies Inc. All Rights Reserved. Information in this document
DMP V2.0.1 Installation and Upgrade Reference
DMP V2.0.1 Installation and Upgrade Reference Page 1 of 40 Table of Contents Overview... 3 Compatibility Issues with Previous DMP Versions... 3 DMP V2.0.1 Installation... 3 Sybase CD... 3 Installed Components...
Nortel Networks Symposium Call Center Server Symposium Database Integration User s Guide
297-2183-911 Nortel Networks Symposium Call Center Server Symposium Database Integration User s Guide Product release 5.0 Standard 1.0 April 2004 Nortel Networks Symposium Call Center Server Symposium
Mimer SQL. Getting Started on Windows. Version 10.1
Mimer SQL Getting Started on Windows Version 10.1 Mimer SQL, Getting Started on Windows, Version 10.1, May 2015 Copyright Mimer Information Technology AB. The contents of this manual may be printed in
ICE for Eclipse. Release 9.0.1
ICE for Eclipse Release 9.0.1 Disclaimer This document is for informational purposes only and is subject to change without notice. This document and its contents, including the viewpoints, dates and functional
Sage ERP Accpac 6.0A. Installation and System Administrator's Guide
Sage ERP Accpac 6.0A Installation and System Administrator's Guide 2010 Sage Software, Inc. All rights reserved. Sage, the Sage logos, and all Sage ERP Accpac product and service names mentioned herein
Version 14.0. Overview. Business value
PRODUCT SHEET CA Datacom Server CA Datacom Server Version 14.0 CA Datacom Server provides web applications and other distributed applications with open access to CA Datacom /DB Version 14.0 data by providing
Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0
Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0 This document supports the version of each product listed and supports all subsequent versions until the document
5.0 Secure Meeting Error Messages
Juniper Networks, Inc. 1194 North Mathilda Avenue Sunnyvale, CA 94089 USA 408 745 2000 or 888 JUNIPER www.juniper.net Contents 5.0 Secure Meeting Error Messages...1 Contacting Juniper...1 Administrator
MarkLogic Server. Connector for SharePoint Administrator s Guide. MarkLogic 8 February, 2015
Connector for SharePoint Administrator s Guide 1 MarkLogic 8 February, 2015 Last Revised: 8.0-1, February, 2015 Copyright 2015 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents
UNICORN 6.4. Administration and Technical Manual
UNICORN 6.4 Administration and Technical Manual Page intentionally left blank Table of Contents Table of Contents 1 Introduction... 1.1 Administrator functions overview... 1.2 Network terms and concepts...
WhatsUp Gold v16.3 Installation and Configuration Guide
WhatsUp Gold v16.3 Installation and Configuration Guide Contents Installing and Configuring WhatsUp Gold using WhatsUp Setup Installation Overview... 1 Overview... 1 Security considerations... 2 Standard
Archive Attender Version 3.5
Archive Attender Version 3.5 Getting Started Guide Sherpa Software (800) 255-5155 www.sherpasoftware.com Page 1 Under the copyright laws, neither the documentation nor the software can be copied, photocopied,
INFORMIX - Data Director for Visual Basic. Version 3.5
INFORMIX - Data Director for Visual Basic Version 3.5 Installing and Configuring Data Director This document explains how to install INFORMIX-Data Director for Visual Basic, Version 3.5, in your Microsoft
Configuring the BIG-IP LTM v11 for Oracle Database and RAC
Deployment Guide DOCUMENT VERSION 1.0 What s inside: 2 Prerequisites and configuration notes 2 Configuration example 3 Configuring the BIG- IP LTM for Oracle Database 8 Appendix A: Instance name switching
ODBC Driver Guide. Installation and Configuration. Freezerworks Unlimited Version 6.0
ODBC Driver Guide Installation and Configuration Freezerworks Unlimited Version 6.0 PO Box 174 Mountlake Terrace, WA 98043 www.freezerworks.com [email protected] 425-673-1974 877-289-7960 U.S. Toll
WhatsUp Gold v16.1 Installation and Configuration Guide
WhatsUp Gold v16.1 Installation and Configuration Guide Contents Installing and Configuring Ipswitch WhatsUp Gold v16.1 using WhatsUp Setup Installing WhatsUp Gold using WhatsUp Setup... 1 Security guidelines
Sage 300 ERP 2012. Installation and Administration Guide
Sage 300 ERP 2012 Installation and Administration Guide This is a publication of Sage Software, Inc. Version 2012 Copyright 2012. Sage Software, Inc. All rights reserved. Sage, the Sage logos, and the
FioranoMQ 9. High Availability Guide
FioranoMQ 9 High Availability Guide Copyright (c) 1999-2008, Fiorano Software Technologies Pvt. Ltd., Copyright (c) 2008-2009, Fiorano Software Pty. Ltd. All rights reserved. This software is the confidential
Inmagic ODBC Driver 8.00 Installation and Upgrade Notes
Inmagic ODBC Driver 8.00 Installation and Upgrade Notes Thank you for purchasing the Inmagic ODBC Driver for DB/Text. This document is for new and upgrade customers. Use the Inmagic ODBC Driver to develop
UNICORN 7.0. Administration and Technical Manual
UNICORN 7.0 Administration and Technical Manual Page intentionally left blank Table of Contents Table of Contents 1 Introduction... 1.1 Administrator functions overview... 1.2 Network terms and concepts...
Network Administrator s Guide and Getting Started with Autodesk Ecotect Analysis
Autodesk Ecotect Analysis 2011 Network Administrator s Guide and Getting Started with Autodesk Ecotect Analysis This document describes how to install and activate Autodesk Ecotect Analysis 2011 software
Data Access Using. ODBC Drivers from MBFoster
MB Foster White Paper January 2002 Data Access Using ODBC Drivers from MBFoster Table Of Contents Data Access with ODBCLink/SE Background...1 ODBCLink/SE...1 Data Source Creation...2 Configuring the MS-IIS
Developing an ODBC C++ Client with MySQL Database
Developing an ODBC C++ Client with MySQL Database Author: Rajinder Yadav Date: Aug 21, 2007 Web: http://devmentor.org Email: [email protected] Assumptions I am going to assume you already know how
Planning the Installation and Installing SQL Server
Chapter 2 Planning the Installation and Installing SQL Server In This Chapter c SQL Server Editions c Planning Phase c Installing SQL Server 22 Microsoft SQL Server 2012: A Beginner s Guide This chapter
KB_SQL Programmer s Reference Guide
KB_SQL Programmer s Reference Guide Table of Contents CHAPTER 1: AN OVERVIEW SQL IN PERSPECTIVE...2 EASY TO LEARN...2 PIGGYBACKING SQL...2 DEVELOPING WITH KB_ESQL/KB_SQL API...3 KB SYSTEMS CLIENT/SERVER
FactoryTalk Gateway Getting Results Guide
Performance and Visibility FactoryTalk Gateway Getting Results Guide Getting Results Guide Table of contents Chapter 1 Introduction Intended audience... 7 Where to find additional information... 7 Help...
Matisse Installation Guide for MS Windows
Matisse Installation Guide for MS Windows July 2013 Matisse Installation Guide for MS Windows Copyright 2013 Matisse Software Inc. All Rights Reserved. This manual and the software described in it are
Micro Focus Database Connectors
data sheet Database Connectors Executive Overview Database Connectors are designed to bridge the worlds of COBOL and Structured Query Language (SQL). There are three Database Connector interfaces: Database
Installation Guide for Workstations
Installation Guide for Workstations Copyright 1998-2005, E-Z Data, Inc. All Rights Reserved. No part of this documentation may be copied, reproduced, or translated in any form without the prior written
Aradial Installation Guide
Aradial Technologies Ltd. Information in this document is subject to change without notice. Companies, names, and data used in examples herein are fictitious unless otherwise noted. No part of this document
Sage Accpac Extended Enterprise Edition 5.6A. Installation and System Administrator's Guide
Sage Accpac Extended Enterprise Edition 5.6A Installation and System Administrator's Guide 2009 Sage Software, Inc. All rights reserved. Sage, the Sage logos, and all Sage Accpac product and service names
Oracle Essbase Integration Services. Readme. Release 9.3.3.0.00
Oracle Essbase Integration Services Release 9.3.3.0.00 Readme To view the most recent version of this Readme, see the 9.3.x documentation library on Oracle Technology Network (OTN) at http://www.oracle.com/technology/documentation/epm.html.
How To Use The Correlog With The Cpl Powerpoint Powerpoint Cpl.Org Powerpoint.Org (Powerpoint) Powerpoint (Powerplst) And Powerpoint 2 (Powerstation) (Powerpoints) (Operations
orrelog SQL Table Monitor Adapter Users Manual http://www.correlog.com mailto:[email protected] CorreLog, SQL Table Monitor Users Manual Copyright 2008-2015, CorreLog, Inc. All rights reserved. No part
Microsoft SQL Server Installation Guide
Microsoft SQL Server Installation Guide Version 3.0 For SQL Server 2014 Developer & 2012 Express October 2014 Copyright 2010 2014 Robert Schudy, Warren Mansur and Jack Polnar Permission granted for any
Voyager Reporting System (VRS) Installation Guide. Revised 5/09/06
Voyager Reporting System (VRS) Installation Guide Revised 5/09/06 System Requirements Verification 1. Verify that the workstation s Operating System is Windows 2000 or Higher. 2. Verify that Microsoft
Installation Instructions for Version 8 (TS M1) of the SAS System for Microsoft Windows
Installation Instructions for Version 8 (TS M1) of the SAS System for Microsoft Windows Table of Contents Chapter 1, Introduction...1 Terminology and Symbols Used in this Document...1 SASROOT Directory...1
Label Gallery Software for Microsoft Windows Terminal Services and Citrix MetaFrame
Label Gallery Software for Microsoft Windows Terminal Services and Citrix MetaFrame White Paper Version 20100716 2009 SATO CORPORATION. All rights reserved. http://www.satoworldwide.com [email protected]
Copyrights, Legal Notices, Trademarks and Servicemarks
Installation Guide Copyrights, Legal Notices, Trademarks and Servicemarks Copyright 1998-2003 Westbrook Technologies Incorporated. All rights reserved. No part of this work may be reproduced or transmitted
"SQL Database Professional " module PRINTED MANUAL
"SQL Database Professional " module PRINTED MANUAL "SQL Database Professional " module All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic, electronic, or
Cloud Services. Introduction...2 Overview...2. Security considerations... 2. Installation...3 Server Configuration...4
Contents Introduction...2 Overview...2 Security considerations... 2 Installation...3 Server Configuration...4 Management Client Connection...4 General Settings... 4 Enterprise Architect Client Connection
Out n About! for Outlook Electronic In/Out Status Board. Administrators Guide. Version 3.x
Out n About! for Outlook Electronic In/Out Status Board Administrators Guide Version 3.x Contents Introduction... 1 Welcome... 1 Administration... 1 System Design... 1 Installation... 3 System Requirements...
System Planning, Deployment, and Best Practices Guide
www.novell.com/documentation System Planning, Deployment, and Best Practices Guide ZENworks Application Virtualization 9.0 February 22, 2012 Legal Notices Novell, Inc., makes no representations or warranties
Server. Version 3.7 Users Guide. Revised 5/28/03
Server Version 3.7 Users Guide Revised 5/28/03 Copyright 1996-2003 by Wavelink Corporation. All rights reserved. This manual may not be reproduced, in whole or in part, without prior written permission
for Networks Installation Guide for the application on a server September 2015 (GUIDE 2) Memory Booster version 1.3-N and later
for Networks Installation Guide for the application on a server September 2015 (GUIDE 2) Memory Booster version 1.3-N and later Copyright 2015, Lucid Innovations Limited. All Rights Reserved Lucid Research
Network Licensing. White Paper 0-15Apr014ks(WP02_Network) Network Licensing with the CRYPTO-BOX. White Paper
WP2 Subject: with the CRYPTO-BOX Version: Smarx OS PPK 5.90 and higher 0-15Apr014ks(WP02_Network).odt Last Update: 28 April 2014 Target Operating Systems: Windows 8/7/Vista (32 & 64 bit), XP, Linux, OS
SQLBase. Starter Guide 20-2905-1004
SQLBase Starter Guide 20-2905-1004 Trademarks Centura, Centura net.db, Centura Ranger, the Centura logo, Centura Web Developer, Gupta, the Gupta logo, Gupta Powered, the Gupta Powered logo, Fast Facts,
SAS 9.4 Intelligence Platform
SAS 9.4 Intelligence Platform Application Server Administration Guide SAS Documentation The correct bibliographic citation for this manual is as follows: SAS Institute Inc. 2013. SAS 9.4 Intelligence Platform:
Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide
Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide Windows 2000, Windows Server 2003 5.0 11293743 Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide Copyright
Jet Data Manager 2012 User Guide
Jet Data Manager 2012 User Guide Welcome This documentation provides descriptions of the concepts and features of the Jet Data Manager and how to use with them. With the Jet Data Manager you can transform
