赞
踩
如果%SQL.Statement
不能提供足够的控制,可以使用 %SQLGatewayConnection
直接访问 ODBC
。它提供了一组与 ODBC
函数相对应的方法以及其他实用程序函数。可以连接并使用兼容ODBC
的数据库,然后执行低级 ODBC
编程。整体流程如下:
%New()
方法创建 %SQLGatewayConnection
的实例。Connect()
方法,传递指定 ODBC
数据源名称的参数,以及登录该源所需的用户名和密码(如有必要)。AllocateStatement()
方法并接收(通过引用)语句句柄。SQL Gateway
实例的其他方法。大多数这些方法调用 ODBC
函数。以下简单示例演示了此过程。它与上一节中的示例类似,但它在版本的Prepare()
和Execute()
中使用%SQLGatewayConnection
直接调用ODBC
查询函数SQLPrepare()
和SQLExecute()
,而不是使用%SQL .Statement
方法:
%SQLGatewayConnection
方法中执行查询ClassMethod ExecuteQuery(mTable As %String) { set mDSN="DSNtest" set mUsrName="SYSDBA" set mUsrPwd="masterkey" // Create an instance and connect set gateway=##class(%SQLGatewayConnection).%New() set status=gateway.Connect(mDSN,mUsrName,mUsrPwd) if $$$ISERR(status) do $System.Status.DisplayError(status) quit $$$ERROR() set hstmt="" // Allocate a statement set status=gateway.AllocateStatement(.hstmt) if $$$ISERR(status) do $System.Status.DisplayError(status) quit $$$ERROR() // Use %SQLGatewayConnection to call ODBC query functions directly set status=gateway.Prepare(hstmt,"SELECT * FROM "_mTable) if $$$ISERR(status) do $System.Status.DisplayError(status) quit $$$ERROR() set status=gateway.Execute(hstmt) if $$$ISERR(status) do $System.Status.DisplayError(status) quit $$$ERROR() quit gateway.Disconnect() }
注意:空值和空字符串
当使用本章中描述的方法时,请记住 IRIS
和 SQL
具有以下重要区别:
SQL
中,""
代表空字符串。IRIS
中,""
等于 null
。IRIS
中,$char(0)
等于空字符串。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。